Algorithmic Trading Model for Simple Moving Average Crossover Grid Search

Task 1. Prepare Environment

In [1]:
!pip install python-dotenv PyMySQL
Requirement already satisfied: python-dotenv in /usr/local/lib/python3.6/dist-packages (0.13.0)
Requirement already satisfied: PyMySQL in /usr/local/lib/python3.6/dist-packages (0.9.3)
In [2]:
# Retrieve CPU information from the system
ncpu = !nproc
print("The number of available CPUs is:", ncpu[0])
The number of available CPUs is: 2
In [3]:
import os
import sys
import smtplib
import numpy as np
import pandas as pd
import requests
import json
from email.message import EmailMessage
import matplotlib.pyplot as plt
from datetime import datetime, timedelta
from dotenv import load_dotenv
In [4]:
# Begin the timer for the script processing
startTimeScript = datetime.now()

# Set up the verbose flag to print detailed messages for debugging (setting True will activate!)
verbose = True

# Set up the sendNotification flag to send progress emails (setting True will send emails!)
notifyStatus = False

# Set up the parent directory location for loading the dotenv files
useColab = True
if useColab:
    # Mount Google Drive locally for storing files
    from google.colab import drive
    drive.mount('/content/gdrive')
    gdrivePrefix = '/content/gdrive/My Drive/Colab_Downloads/'
    env_path = '/content/gdrive/My Drive/Colab Notebooks/'
    dotenv_path = env_path + "python_script.env"
    load_dotenv(dotenv_path=dotenv_path)

# Set up the dotenv file for retrieving environment variables
useLocalPC = False
if useLocalPC:
    env_path = "/Users/david/PycharmProjects/"
    dotenv_path = env_path + "python_script.env"
    load_dotenv(dotenv_path=dotenv_path)

# Configure the plotting style
plt.style.use('seaborn')

# Set Pandas options
pd.set_option("display.max_rows", None)
pd.set_option("display.max_columns", None)
# pd.set_option("display.width", 140)
Drive already mounted at /content/gdrive; to attempt to forcibly remount, call drive.mount("/content/gdrive", force_remount=True).
In [5]:
stock_symbol = 'NFLX'
initial_capital = 0

# Specify the parameters for the trading strategy
fast_ma_min = 5
fast_ma_max = 20
slow_ma_min = 10
slow_ma_max = 50
ma_increment = 5
min_ma_gap = 5

model_start_date = datetime(2019, 1, 1)
print("Starting date for the model:", model_start_date)
stock_start_date = model_start_date - timedelta(days=int(slow_ma_max*1.5)) # Need more pricing data to calculate moving averages

model_end_date = datetime.now()
# model_end_date = datetime(2020, 6, 30)
print("Ending date for the model:", model_end_date)
Starting date for the model: 2019-01-01 00:00:00
Ending date for the model: 2020-06-30 21:29:54.754300

Task 2. Acquire and Pre-Process Data

In [6]:
# Check and see whether the API key is available
quandl_key = os.environ.get('QUANDL_API')
if quandl_key is None: sys.exit("API key for Quandl not available. Script Processing Aborted!!!")
In [7]:
start_date_string = stock_start_date.strftime('%Y-%m-%d')
end_date_string = model_end_date.strftime('%Y-%m-%d')

quandl_url = "https://www.quandl.com/api/v3/datatables/SHARADAR/SEP.json?date.gte=%s&date.lte=%s&ticker=%s&api_key=%s" % (start_date_string, end_date_string, stock_symbol, quandl_key)
In [8]:
response = requests.get(quandl_url)
quandl_dict = json.loads(response.text)
stock_quandl = pd.DataFrame(quandl_dict['datatable']['data'])
print(len(stock_quandl), 'data points retrieved from the API call.')
427 data points retrieved from the API call.
In [9]:
stock_quandl.columns = ['ticker', 'date', 'open', 'high', 'low', 'close', 'volume', 'dividend', 'closeunadj', 'lastupdated']
# stock_quandl.set_index('date', inplace=True)
stock_quandl.index = pd.to_datetime(stock_quandl.date)
stock_quandl = stock_quandl.sort_index(ascending = True)
stock_quandl.info(verbose=True)
<class 'pandas.core.frame.DataFrame'>
DatetimeIndex: 427 entries, 2018-10-18 to 2020-06-30
Data columns (total 10 columns):
 #   Column       Non-Null Count  Dtype  
---  ------       --------------  -----  
 0   ticker       427 non-null    object 
 1   date         427 non-null    object 
 2   open         427 non-null    float64
 3   high         427 non-null    float64
 4   low          427 non-null    float64
 5   close        427 non-null    float64
 6   volume       427 non-null    float64
 7   dividend     427 non-null    float64
 8   closeunadj   427 non-null    float64
 9   lastupdated  427 non-null    object 
dtypes: float64(7), object(3)
memory usage: 36.7+ KB
In [10]:
stock_quandl.head()
Out[10]:
ticker date open high low close volume dividend closeunadj lastupdated
date
2018-10-18 NFLX 2018-10-18 360.673 362.20 346.05 346.71 18461040.0 0.0 346.71 2020-05-01
2018-10-19 NFLX 2018-10-19 351.000 355.80 332.20 332.67 16717233.0 0.0 332.67 2020-05-01
2018-10-22 NFLX 2018-10-22 333.100 335.80 320.34 329.54 17097175.0 0.0 329.54 2020-05-01
2018-10-23 NFLX 2018-10-23 318.000 336.58 316.77 333.16 14907326.0 0.0 333.16 2020-05-01
2018-10-24 NFLX 2018-10-24 332.280 333.00 300.73 301.83 19039297.0 0.0 301.83 2020-05-01
In [11]:
stock_quandl.tail()
Out[11]:
ticker date open high low close volume dividend closeunadj lastupdated
date
2020-06-24 NFLX 2020-06-24 468.54 472.36 454.00 457.85 4804903.0 0.0 457.85 2020-06-24
2020-06-25 NFLX 2020-06-25 458.86 467.01 454.00 465.91 3938090.0 0.0 465.91 2020-06-25
2020-06-26 NFLX 2020-06-26 466.39 468.03 442.24 443.40 6804726.0 0.0 443.40 2020-06-26
2020-06-29 NFLX 2020-06-29 445.23 447.67 432.14 447.24 4828402.0 0.0 447.24 2020-06-30
2020-06-30 NFLX 2020-06-30 450.02 457.59 447.00 455.04 4099942.0 0.0 455.04 2020-06-30
In [12]:
title_string = 'Quandl Historical Stock Information for ' + stock_symbol
stock_quandl['close'].plot(figsize=(16,9), title=title_string)
plt.show()

Task 3. Develop Strategy and Train Model

3.a) Set up the Dataframe for the Trading Model

In [13]:
# Set up the standard column name for modeling
model_template = stock_quandl.loc[:, ['open','close']]
model_template.rename(columns={'open': 'open_price', 'close': 'close_price'}, inplace=True)
if verbose: model_template.info(verbose=True)
<class 'pandas.core.frame.DataFrame'>
DatetimeIndex: 427 entries, 2018-10-18 to 2020-06-30
Data columns (total 2 columns):
 #   Column       Non-Null Count  Dtype  
---  ------       --------------  -----  
 0   open_price   427 non-null    float64
 1   close_price  427 non-null    float64
dtypes: float64(2)
memory usage: 10.0 KB

3.b) Set up the Analysis Table with Indicators

In [14]:
def trading_ma_crossover(model):
    waitfor_first_entry = True
    for x in range(len(model)):
        if model['ma_change'].iloc[x] > 0:
            model['trade_signal'].iloc[x] = 1  # trade_signal = 1 means we should take a long position
        else:
            model['trade_signal'].iloc[x] = 0  # trade_signal = 0 means we should take a flat position
        if x != 0:
            model['signal_change'].iloc[x] = model['trade_signal'].iloc[x] - model['trade_signal'].iloc[x-1]
            if waitfor_first_entry and (model['signal_change'].iloc[x-1] == 1):
                model['entry_exit'].iloc[x] = model['signal_change'].iloc[x-1]
                waitfor_first_entry = False
            elif (not waitfor_first_entry) and (model['signal_change'].iloc[x-1] != 0):
                model['entry_exit'].iloc[x] = model['signal_change'].iloc[x-1]
In [15]:
model_collection = {}
serial_number = 1

for slow_ma in range(slow_ma_min, slow_ma_max+1, ma_increment):
    for fast_ma in range(fast_ma_min, fast_ma_max+1, ma_increment):
        if (slow_ma - fast_ma) < min_ma_gap: break
        print('Processing model with slow_ma of', slow_ma, 'and fast_ma of', fast_ma)
        model_name = 'SMA_' + str(serial_number).zfill(3) + '_SlowMA_' + str(slow_ma).zfill(2) + '_FastMA_' + str(fast_ma).zfill(2)
        serial_number = serial_number + 1
        trading_model = model_template.copy()
        trading_model['fast_ma'] = trading_model['close_price'].rolling(fast_ma).mean()
        trading_model['slow_ma'] = trading_model['close_price'].rolling(slow_ma).mean()
        trading_model['ma_change'] = trading_model['fast_ma'] - trading_model['slow_ma']
        trading_model['trade_signal'] = np.zeros(len(trading_model))
        trading_model['signal_change'] = np.zeros(len(trading_model))
        trading_model['entry_exit'] = np.zeros(len(trading_model))
        trading_model = trading_model[model_start_date:model_end_date]
        trading_ma_crossover(trading_model)
        model_collection[model_name] = trading_model.copy()
        print('Model', model_name, 'added to the trading model collection.')
Processing model with slow_ma of 10 and fast_ma of 5
Model SMA_001_SlowMA_10_FastMA_05 added to the trading model collection.
Processing model with slow_ma of 15 and fast_ma of 5
Model SMA_002_SlowMA_15_FastMA_05 added to the trading model collection.
Processing model with slow_ma of 15 and fast_ma of 10
Model SMA_003_SlowMA_15_FastMA_10 added to the trading model collection.
Processing model with slow_ma of 20 and fast_ma of 5
Model SMA_004_SlowMA_20_FastMA_05 added to the trading model collection.
Processing model with slow_ma of 20 and fast_ma of 10
Model SMA_005_SlowMA_20_FastMA_10 added to the trading model collection.
Processing model with slow_ma of 20 and fast_ma of 15
Model SMA_006_SlowMA_20_FastMA_15 added to the trading model collection.
Processing model with slow_ma of 25 and fast_ma of 5
Model SMA_007_SlowMA_25_FastMA_05 added to the trading model collection.
Processing model with slow_ma of 25 and fast_ma of 10
Model SMA_008_SlowMA_25_FastMA_10 added to the trading model collection.
Processing model with slow_ma of 25 and fast_ma of 15
Model SMA_009_SlowMA_25_FastMA_15 added to the trading model collection.
Processing model with slow_ma of 25 and fast_ma of 20
Model SMA_010_SlowMA_25_FastMA_20 added to the trading model collection.
Processing model with slow_ma of 30 and fast_ma of 5
Model SMA_011_SlowMA_30_FastMA_05 added to the trading model collection.
Processing model with slow_ma of 30 and fast_ma of 10
Model SMA_012_SlowMA_30_FastMA_10 added to the trading model collection.
Processing model with slow_ma of 30 and fast_ma of 15
Model SMA_013_SlowMA_30_FastMA_15 added to the trading model collection.
Processing model with slow_ma of 30 and fast_ma of 20
Model SMA_014_SlowMA_30_FastMA_20 added to the trading model collection.
Processing model with slow_ma of 35 and fast_ma of 5
Model SMA_015_SlowMA_35_FastMA_05 added to the trading model collection.
Processing model with slow_ma of 35 and fast_ma of 10
Model SMA_016_SlowMA_35_FastMA_10 added to the trading model collection.
Processing model with slow_ma of 35 and fast_ma of 15
Model SMA_017_SlowMA_35_FastMA_15 added to the trading model collection.
Processing model with slow_ma of 35 and fast_ma of 20
Model SMA_018_SlowMA_35_FastMA_20 added to the trading model collection.
Processing model with slow_ma of 40 and fast_ma of 5
Model SMA_019_SlowMA_40_FastMA_05 added to the trading model collection.
Processing model with slow_ma of 40 and fast_ma of 10
Model SMA_020_SlowMA_40_FastMA_10 added to the trading model collection.
Processing model with slow_ma of 40 and fast_ma of 15
Model SMA_021_SlowMA_40_FastMA_15 added to the trading model collection.
Processing model with slow_ma of 40 and fast_ma of 20
Model SMA_022_SlowMA_40_FastMA_20 added to the trading model collection.
Processing model with slow_ma of 45 and fast_ma of 5
Model SMA_023_SlowMA_45_FastMA_05 added to the trading model collection.
Processing model with slow_ma of 45 and fast_ma of 10
Model SMA_024_SlowMA_45_FastMA_10 added to the trading model collection.
Processing model with slow_ma of 45 and fast_ma of 15
Model SMA_025_SlowMA_45_FastMA_15 added to the trading model collection.
Processing model with slow_ma of 45 and fast_ma of 20
Model SMA_026_SlowMA_45_FastMA_20 added to the trading model collection.
Processing model with slow_ma of 50 and fast_ma of 5
Model SMA_027_SlowMA_50_FastMA_05 added to the trading model collection.
Processing model with slow_ma of 50 and fast_ma of 10
Model SMA_028_SlowMA_50_FastMA_10 added to the trading model collection.
Processing model with slow_ma of 50 and fast_ma of 15
Model SMA_029_SlowMA_50_FastMA_15 added to the trading model collection.
Processing model with slow_ma of 50 and fast_ma of 20
Model SMA_030_SlowMA_50_FastMA_20 added to the trading model collection.
In [16]:
# List the entry/exit points for each model
for key in model_collection:
    print('List the signal change and entry/exit points for', key)
    if verbose: print(model_collection[key][(model_collection[key].signal_change != 0) | (model_collection[key].entry_exit != 0)])
    else: print(model_collection[key][model_collection[key].entry_exit != 0])
    print()
List the signal change and entry/exit points for SMA_001_SlowMA_10_FastMA_05
            open_price  close_price  fast_ma   slow_ma  ma_change  \
date                                                                
2019-01-24     320.600       326.67  333.222  336.7330    -3.5110   
2019-01-31     339.680       339.50  336.554  334.8880     1.6660   
2019-02-01     337.180       339.85  336.914  333.5540     3.3600   
2019-03-04     359.720       351.04  358.860  360.0030    -1.1430   
2019-03-05     351.460       354.30  356.726  359.2410    -2.5150   
2019-03-14     360.500       358.82  356.952  355.9630     0.9890   
2019-03-15     361.020       361.46  359.324  356.3770     2.9470   
2019-03-28     354.485       354.61  359.038  363.1960    -4.1580   
2019-03-29     357.160       356.56  358.148  362.7060    -4.5580   
2019-04-04     370.070       367.88  365.774  362.4060     3.3680   
2019-04-05     369.000       365.49  367.560  362.8540     4.7060   
2019-04-11     365.000       367.65  364.636  365.2050    -0.5690   
2019-04-12     360.690       351.14  361.766  364.6630    -2.8970   
2019-04-23     375.450       381.89  366.756  363.0070     3.7490   
2019-04-24     381.070       374.23  369.710  363.9590     5.7510   
2019-05-09     360.900       362.75  372.256  373.6370    -1.3810   
2019-05-10     361.620       361.04  367.458  372.2560    -4.7980   
2019-05-22     358.010       359.73  355.174  354.5520     0.6220   
2019-05-23     355.500       352.21  353.754  353.4980     0.2560   
2019-05-29     353.600       349.19  354.060  354.1430    -0.0830   
2019-05-30     350.550       351.85  352.484  353.8290    -1.3450   
2019-06-07     357.390       360.87  352.752  351.7250     1.0270   
2019-06-10     363.650       352.01  355.828  351.4870     4.3410   
2019-06-14     341.630       339.73  346.400  349.5760    -3.1760   
2019-06-17     342.690       350.62  346.122  350.9750    -4.8530   
2019-06-20     365.910       365.21  355.240  352.9340     2.3060   
2019-06-21     365.000       369.21  361.136  353.7680     7.3680   
2019-07-15     372.940       366.60  376.056  376.8740    -0.8180   
2019-07-16     370.090       365.99  373.268  376.0130    -2.7450   
2019-07-30     329.200       325.93  327.762  325.9480     1.8140   
2019-07-31     325.160       322.99  328.772  322.0030     6.7690   
2019-08-05     310.960       307.63  318.976  321.5060    -2.5300   
2019-08-06     310.580       310.10  315.810  321.7860    -5.9760   
2019-09-17     294.500       298.60  292.834  292.1440     0.6900   
2019-09-18     294.990       291.56  293.492  292.1480     1.3440   
2019-09-20     280.260       270.75  288.360  289.5410    -1.1810   
2019-09-23     268.345       265.92  282.686  286.6990    -4.0130   
2019-10-03     267.780       268.15  267.292  265.5780     1.7140   
2019-10-04     268.200       272.79  269.234  265.7820     3.4520   
2019-10-22     271.159       266.69  279.934  280.0390    -0.1050   
2019-10-23     268.060       271.27  276.932  280.4130    -3.4810   
2019-10-30     284.340       291.45  280.568  278.7500     1.8180   
2019-10-31     291.000       287.41  283.750  278.1560     5.5940   
2019-12-04     308.430       304.32  310.212  310.6430    -0.4310   
2019-12-05     305.270       302.86  307.598  310.4130    -2.8150   
2019-12-17     307.360       315.48  303.112  302.5710     0.5410   
2019-12-18     316.260       320.80  307.486  304.2190     3.2670   
2020-01-02     326.100       329.81  327.682  329.4630    -1.7810   
2020-01-03     326.780       325.90  326.336  329.9730    -3.6370   
2020-01-08     331.490       339.26  332.310  330.3350     1.9750   
2020-01-09     342.000       335.66  333.480  330.5810     2.8990   
2020-01-22     332.550       326.00  336.294  336.3050    -0.0110   
2020-01-23     326.040       349.60  338.400  337.3390     1.0610   
2020-01-24     348.460       353.16  341.308  339.0890     2.2190   
2020-02-25     372.000       360.09  376.210  378.4330    -2.2230   
2020-02-26     366.310       379.24  374.820  378.9880    -4.1680   
2020-03-04     377.770       383.79  374.870  374.8450     0.0250   
2020-03-05     381.000       372.78  375.084  373.5230     1.5610   
2020-03-09     343.860       346.49  368.160  370.1920    -2.0320   
2020-03-10     356.425       364.13  367.232  370.5960    -3.3640   
2020-03-24     369.990       357.32  339.584  331.7975     7.7865   
2020-03-25     361.020       342.39  344.968  331.0445    13.9235   
2020-04-27     425.000       421.38  425.664  426.8240    -1.1600   
2020-04-28     419.990       403.83  419.664  425.8520    -6.1880   
2020-05-05     427.555       424.68  419.968  419.8160     0.1520   
2020-05-06     429.300       434.26  424.442  421.1000     3.3420   
2020-05-26     427.770       414.77  435.810  439.7860    -3.9760   
2020-05-27     410.380       419.89  429.580  438.5930    -9.0130   
2020-06-05     407.290       419.60  421.826  420.6280     1.1980   
2020-06-08     416.000       419.49  420.540  419.6450     0.8950   
2020-06-30     450.020       455.04  453.888  455.5100    -1.6220   

            trade_signal  signal_change  entry_exit  
date                                                 
2019-01-24           0.0           -1.0         0.0  
2019-01-31           1.0            1.0         0.0  
2019-02-01           1.0            0.0         1.0  
2019-03-04           0.0           -1.0         0.0  
2019-03-05           0.0            0.0        -1.0  
2019-03-14           1.0            1.0         0.0  
2019-03-15           1.0            0.0         1.0  
2019-03-28           0.0           -1.0         0.0  
2019-03-29           0.0            0.0        -1.0  
2019-04-04           1.0            1.0         0.0  
2019-04-05           1.0            0.0         1.0  
2019-04-11           0.0           -1.0         0.0  
2019-04-12           0.0            0.0        -1.0  
2019-04-23           1.0            1.0         0.0  
2019-04-24           1.0            0.0         1.0  
2019-05-09           0.0           -1.0         0.0  
2019-05-10           0.0            0.0        -1.0  
2019-05-22           1.0            1.0         0.0  
2019-05-23           1.0            0.0         1.0  
2019-05-29           0.0           -1.0         0.0  
2019-05-30           0.0            0.0        -1.0  
2019-06-07           1.0            1.0         0.0  
2019-06-10           1.0            0.0         1.0  
2019-06-14           0.0           -1.0         0.0  
2019-06-17           0.0            0.0        -1.0  
2019-06-20           1.0            1.0         0.0  
2019-06-21           1.0            0.0         1.0  
2019-07-15           0.0           -1.0         0.0  
2019-07-16           0.0            0.0        -1.0  
2019-07-30           1.0            1.0         0.0  
2019-07-31           1.0            0.0         1.0  
2019-08-05           0.0           -1.0         0.0  
2019-08-06           0.0            0.0        -1.0  
2019-09-17           1.0            1.0         0.0  
2019-09-18           1.0            0.0         1.0  
2019-09-20           0.0           -1.0         0.0  
2019-09-23           0.0            0.0        -1.0  
2019-10-03           1.0            1.0         0.0  
2019-10-04           1.0            0.0         1.0  
2019-10-22           0.0           -1.0         0.0  
2019-10-23           0.0            0.0        -1.0  
2019-10-30           1.0            1.0         0.0  
2019-10-31           1.0            0.0         1.0  
2019-12-04           0.0           -1.0         0.0  
2019-12-05           0.0            0.0        -1.0  
2019-12-17           1.0            1.0         0.0  
2019-12-18           1.0            0.0         1.0  
2020-01-02           0.0           -1.0         0.0  
2020-01-03           0.0            0.0        -1.0  
2020-01-08           1.0            1.0         0.0  
2020-01-09           1.0            0.0         1.0  
2020-01-22           0.0           -1.0         0.0  
2020-01-23           1.0            1.0        -1.0  
2020-01-24           1.0            0.0         1.0  
2020-02-25           0.0           -1.0         0.0  
2020-02-26           0.0            0.0        -1.0  
2020-03-04           1.0            1.0         0.0  
2020-03-05           1.0            0.0         1.0  
2020-03-09           0.0           -1.0         0.0  
2020-03-10           0.0            0.0        -1.0  
2020-03-24           1.0            1.0         0.0  
2020-03-25           1.0            0.0         1.0  
2020-04-27           0.0           -1.0         0.0  
2020-04-28           0.0            0.0        -1.0  
2020-05-05           1.0            1.0         0.0  
2020-05-06           1.0            0.0         1.0  
2020-05-26           0.0           -1.0         0.0  
2020-05-27           0.0            0.0        -1.0  
2020-06-05           1.0            1.0         0.0  
2020-06-08           1.0            0.0         1.0  
2020-06-30           0.0           -1.0         0.0  

List the signal change and entry/exit points for SMA_002_SlowMA_15_FastMA_05
            open_price  close_price  fast_ma     slow_ma  ma_change  \
date                                                                  
2019-01-03     270.200       271.20  263.633  262.062333   1.570667   
2019-01-04     281.880       297.57  272.034  263.575000   8.459000   
2019-01-25     328.720       338.05  330.194  330.568000  -0.374000   
2019-01-28     334.700       335.66  329.506  333.107333  -3.601333   
2019-02-04     342.600       351.34  340.050  338.602667   1.447333   
2019-02-05     353.200       355.81  345.432  340.127333   5.304667   
2019-03-05     351.460       354.30  356.726  358.800667  -2.074667   
2019-03-06     353.600       359.61  356.074  358.776667  -2.702667   
2019-03-15     361.020       361.46  359.324  358.062667   1.261333   
2019-03-18     362.470       363.44  360.240  358.031333   2.208667   
2019-03-28     354.485       354.61  359.038  361.114667  -2.076667   
2019-03-29     357.160       356.56  358.148  361.578667  -3.430667   
2019-04-04     370.070       367.88  365.774  364.055333   1.718667   
2019-04-05     369.000       365.49  367.560  364.324000   3.236000   
2019-04-12     360.690       351.14  361.766  362.491333  -0.725333   
2019-04-15     350.710       348.87  359.258  361.334000  -2.076000   
2019-04-23     375.450       381.89  366.756  364.154667   2.601333   
2019-04-24     381.070       374.23  369.710  364.588667   5.121333   
2019-05-09     360.900       362.75  372.256  373.234000  -0.978000   
2019-05-10     361.620       361.04  367.458  373.280000  -5.822000   
2019-06-07     357.390       360.87  352.752  352.401333   0.350667   
2019-06-10     363.650       352.01  355.828  352.238667   3.589333   
2019-06-13     347.230       343.43  350.628  350.782000  -0.154000   
2019-06-14     341.630       339.73  346.400  349.950000  -3.550000   
2019-06-19     361.720       363.52  350.884  350.810000   0.074000   
2019-06-20     365.910       365.21  355.240  351.700667   3.539333   
2019-07-17     366.250       362.44  369.556  373.114000  -3.558000   
2019-07-18     323.760       325.21  358.698  370.648000 -11.950000   
2019-09-17     294.500       298.60  292.834  292.270667   0.563333   
2019-09-18     294.990       291.56  293.492  292.306000   1.186000   
2019-09-20     280.260       270.75  288.360  290.226000  -1.866000   
2019-09-23     268.345       265.92  282.686  288.370667  -5.684667   
2019-10-08     273.030       270.72  270.830  270.127333   0.702667   
2019-10-09     270.020       267.53  270.730  268.525333   2.204667   
2019-10-23     268.060       271.27  276.932  277.185333  -0.253333   
2019-10-24     271.810       271.50  272.562  277.408667  -4.846667   
2019-10-30     284.340       291.45  280.568  280.464667   0.103333   
2019-10-31     291.000       287.41  283.750  280.926667   2.823333   
2019-12-06     304.700       307.35  306.136  307.789333  -1.653333   
2019-12-09     307.350       302.50  304.638  308.287333  -3.649333   
2019-12-18     316.260       320.80  307.486  306.216667   1.269333   
2019-12-19     324.500       332.22  314.242  307.302667   6.939333   
2020-02-26     366.310       379.24  374.820  375.868667  -1.048667   
2020-02-27     371.460       371.71  371.962  376.004667  -4.042667   
2020-03-25     361.020       342.39  344.968  340.849000   4.119000   
2020-03-26     344.000       362.99  351.160  340.196333  10.963667   
2020-04-30     410.310       419.85  416.388  418.083333  -1.695333   
2020-05-01     415.100       415.27  414.444  421.053333  -6.609333   
2020-05-06     429.300       434.26  424.442  424.391333   0.050667   
2020-05-07     436.890       436.53  427.778  424.215333   3.562667   
2020-05-26     427.770       414.77  435.810  437.960000  -2.150000   
2020-05-27     410.380       419.89  429.580  437.640667  -8.060667   
2020-06-11     428.200       425.56  426.636  423.740667   2.895333   
2020-06-12     429.000       418.07  426.330  422.528667   3.801333   

            trade_signal  signal_change  entry_exit  
date                                                 
2019-01-03           1.0            1.0         0.0  
2019-01-04           1.0            0.0         1.0  
2019-01-25           0.0           -1.0         0.0  
2019-01-28           0.0            0.0        -1.0  
2019-02-04           1.0            1.0         0.0  
2019-02-05           1.0            0.0         1.0  
2019-03-05           0.0           -1.0         0.0  
2019-03-06           0.0            0.0        -1.0  
2019-03-15           1.0            1.0         0.0  
2019-03-18           1.0            0.0         1.0  
2019-03-28           0.0           -1.0         0.0  
2019-03-29           0.0            0.0        -1.0  
2019-04-04           1.0            1.0         0.0  
2019-04-05           1.0            0.0         1.0  
2019-04-12           0.0           -1.0         0.0  
2019-04-15           0.0            0.0        -1.0  
2019-04-23           1.0            1.0         0.0  
2019-04-24           1.0            0.0         1.0  
2019-05-09           0.0           -1.0         0.0  
2019-05-10           0.0            0.0        -1.0  
2019-06-07           1.0            1.0         0.0  
2019-06-10           1.0            0.0         1.0  
2019-06-13           0.0           -1.0         0.0  
2019-06-14           0.0            0.0        -1.0  
2019-06-19           1.0            1.0         0.0  
2019-06-20           1.0            0.0         1.0  
2019-07-17           0.0           -1.0         0.0  
2019-07-18           0.0            0.0        -1.0  
2019-09-17           1.0            1.0         0.0  
2019-09-18           1.0            0.0         1.0  
2019-09-20           0.0           -1.0         0.0  
2019-09-23           0.0            0.0        -1.0  
2019-10-08           1.0            1.0         0.0  
2019-10-09           1.0            0.0         1.0  
2019-10-23           0.0           -1.0         0.0  
2019-10-24           0.0            0.0        -1.0  
2019-10-30           1.0            1.0         0.0  
2019-10-31           1.0            0.0         1.0  
2019-12-06           0.0           -1.0         0.0  
2019-12-09           0.0            0.0        -1.0  
2019-12-18           1.0            1.0         0.0  
2019-12-19           1.0            0.0         1.0  
2020-02-26           0.0           -1.0         0.0  
2020-02-27           0.0            0.0        -1.0  
2020-03-25           1.0            1.0         0.0  
2020-03-26           1.0            0.0         1.0  
2020-04-30           0.0           -1.0         0.0  
2020-05-01           0.0            0.0        -1.0  
2020-05-06           1.0            1.0         0.0  
2020-05-07           1.0            0.0         1.0  
2020-05-26           0.0           -1.0         0.0  
2020-05-27           0.0            0.0        -1.0  
2020-06-11           1.0            1.0         0.0  
2020-06-12           1.0            0.0         1.0  

List the signal change and entry/exit points for SMA_003_SlowMA_15_FastMA_10
            open_price  close_price   fast_ma     slow_ma  ma_change  \
date                                                                   
2019-01-07     302.100       315.34  266.5015  266.196333   0.305167   
2019-01-08     319.980       320.27  273.8895  269.758333   4.131167   
2019-01-31     339.680       339.50  334.8880  336.673333  -1.785333   
2019-02-01     337.180       339.85  333.5540  337.686000  -4.132000   
2019-02-06     357.000       352.19  340.8630  339.964000   0.899000   
2019-02-07     347.900       344.71  342.6670  339.518667   3.148333   
2019-03-07     360.160       352.60  358.7740  358.832000  -0.058000   
2019-03-08     345.750       349.60  357.4320  358.200667  -0.768667   
2019-03-19     366.400       358.78  358.0650  357.618667   0.446333   
2019-03-20     358.910       375.22  359.6260  358.442000   1.184000   
2019-04-03     369.260       369.75  363.4050  363.451333  -0.046333   
2019-04-04     370.070       367.88  362.4060  364.055333  -1.649333   
2019-04-10     365.790       363.92  363.9010  363.830667   0.070333   
2019-04-11     365.000       367.65  365.2050  363.149333   2.055667   
2019-04-17     365.050       354.74  360.5270  361.391333  -0.864333   
2019-04-18     355.000       360.35  359.7740  361.774000  -2.000000   
2019-04-26     368.350       374.85  365.1200  364.958667   0.161333   
2019-04-29     373.680       371.83  367.1890  365.381333   1.807667   
2019-05-10     361.620       361.04  372.2560  373.280000  -1.024000   
2019-05-13     352.290       345.26  369.5990  371.141333  -1.542333   
2019-06-17     342.690       350.62  350.9750  349.698667   1.276333   
2019-06-18     355.570       357.12  351.3470  349.854667   1.492333   
2019-06-24     370.270       371.04  355.6710  355.723333  -0.052333   
2019-06-25     370.750       360.30  356.5740  356.183333   0.390667   
2019-06-26     361.600       362.20  358.2380  356.614667   1.623333   
2019-07-18     323.760       325.21  369.0630  370.648000  -1.585000   
2019-07-19     323.400       315.10  362.5180  366.986667  -4.468667   
2019-08-07     302.560       304.29  320.4210  318.692000   1.729000   
2019-08-08     311.030       315.90  319.3650  318.071333   1.293667   
2019-08-09     313.740       308.93  316.6800  317.660000  -0.980000   
2019-08-12     305.460       310.83  314.4930  317.674000  -3.181000   
2019-10-09     270.020       267.53  268.5270  268.525333   0.001667   
2019-10-10     265.970       280.48  270.2440  268.117333   2.126667   
2019-10-29     281.870       281.21  278.2330  278.870000  -0.637000   
2019-10-30     284.340       291.45  278.7500  280.464667  -1.714667   
2019-11-05     289.990       288.03  282.9220  281.926000   0.996000   
2019-11-06     288.190       288.59  284.6540  282.080000   2.574000   
2019-12-10     296.120       293.12  306.9380  307.657333  -0.719333   
2019-12-11     294.490       298.93  305.5820  307.412667  -1.830667   
2019-12-20     335.000       336.90  310.1100  308.785333   1.324667   
2019-12-23     337.760       333.10  313.1700  310.326000   2.844000   
2020-01-09     342.000       335.66  330.5810  330.802000  -0.221000   
2020-01-10     337.130       329.05  330.2230  331.352000  -1.129000   
2020-01-14     344.400       338.69  332.7440  331.918000   0.826000   
2020-01-15     338.680       339.07  334.2940  332.316000   1.978000   
2020-03-02     373.110       381.05  376.9860  377.095333  -0.109333   
2020-03-03     381.030       368.77  375.0850  376.942000  -1.857000   
2020-03-30     363.000       370.96  345.1130  341.037667   4.075333   
2020-03-31     367.930       375.50  350.6880  341.795667   8.892333   
2020-05-04     417.780       428.15  420.7310  423.148667  -2.417667   
2020-05-05     427.555       424.68  419.8160  423.890667  -4.074667   
2020-05-12     442.000       431.82  427.8520  425.122667   2.729333   
2020-05-13     435.690       438.27  430.4900  426.246000   4.244000   
2020-05-28     417.240       413.44  436.1100  436.252667  -0.142667   
2020-05-29     417.460       419.73  433.8880  435.132667  -1.244667   
2020-06-11     428.200       425.56  424.2440  423.740667   0.503333   
2020-06-12     429.000       418.07  424.0780  422.528667   1.549333   

            trade_signal  signal_change  entry_exit  
date                                                 
2019-01-07           1.0            1.0         0.0  
2019-01-08           1.0            0.0         1.0  
2019-01-31           0.0           -1.0         0.0  
2019-02-01           0.0            0.0        -1.0  
2019-02-06           1.0            1.0         0.0  
2019-02-07           1.0            0.0         1.0  
2019-03-07           0.0           -1.0         0.0  
2019-03-08           0.0            0.0        -1.0  
2019-03-19           1.0            1.0         0.0  
2019-03-20           1.0            0.0         1.0  
2019-04-03           0.0           -1.0         0.0  
2019-04-04           0.0            0.0        -1.0  
2019-04-10           1.0            1.0         0.0  
2019-04-11           1.0            0.0         1.0  
2019-04-17           0.0           -1.0         0.0  
2019-04-18           0.0            0.0        -1.0  
2019-04-26           1.0            1.0         0.0  
2019-04-29           1.0            0.0         1.0  
2019-05-10           0.0           -1.0         0.0  
2019-05-13           0.0            0.0        -1.0  
2019-06-17           1.0            1.0         0.0  
2019-06-18           1.0            0.0         1.0  
2019-06-24           0.0           -1.0         0.0  
2019-06-25           1.0            1.0        -1.0  
2019-06-26           1.0            0.0         1.0  
2019-07-18           0.0           -1.0         0.0  
2019-07-19           0.0            0.0        -1.0  
2019-08-07           1.0            1.0         0.0  
2019-08-08           1.0            0.0         1.0  
2019-08-09           0.0           -1.0         0.0  
2019-08-12           0.0            0.0        -1.0  
2019-10-09           1.0            1.0         0.0  
2019-10-10           1.0            0.0         1.0  
2019-10-29           0.0           -1.0         0.0  
2019-10-30           0.0            0.0        -1.0  
2019-11-05           1.0            1.0         0.0  
2019-11-06           1.0            0.0         1.0  
2019-12-10           0.0           -1.0         0.0  
2019-12-11           0.0            0.0        -1.0  
2019-12-20           1.0            1.0         0.0  
2019-12-23           1.0            0.0         1.0  
2020-01-09           0.0           -1.0         0.0  
2020-01-10           0.0            0.0        -1.0  
2020-01-14           1.0            1.0         0.0  
2020-01-15           1.0            0.0         1.0  
2020-03-02           0.0           -1.0         0.0  
2020-03-03           0.0            0.0        -1.0  
2020-03-30           1.0            1.0         0.0  
2020-03-31           1.0            0.0         1.0  
2020-05-04           0.0           -1.0         0.0  
2020-05-05           0.0            0.0        -1.0  
2020-05-12           1.0            1.0         0.0  
2020-05-13           1.0            0.0         1.0  
2020-05-28           0.0           -1.0         0.0  
2020-05-29           0.0            0.0        -1.0  
2020-06-11           1.0            1.0         0.0  
2020-06-12           1.0            0.0         1.0  

List the signal change and entry/exit points for SMA_004_SlowMA_20_FastMA_05
            open_price  close_price  fast_ma    slow_ma  ma_change  \
date                                                                 
2019-01-04     281.880       297.57  272.034  265.57725    6.45675   
2019-01-07     302.100       315.34  283.886  267.20025   16.68575   
2019-03-06     353.600       359.61  356.074  356.59100   -0.51700   
2019-03-07     360.160       352.60  354.974  356.61150   -1.63750   
2019-03-15     361.020       361.46  359.324  358.48150    0.84250   
2019-03-18     362.470       363.44  360.240  358.81000    1.43000   
2019-03-28     354.485       354.61  359.038  359.57950   -0.54150   
2019-03-29     357.160       356.56  358.148  359.54150   -1.39350   
2019-04-03     369.260       369.75  363.120  361.51550    1.60450   
2019-04-04     370.070       367.88  365.774  362.27950    3.49450   
2019-04-12     360.690       351.14  361.766  363.68450   -1.91850   
2019-04-15     350.710       348.87  359.258  362.95600   -3.69800   
2019-04-23     375.450       381.89  366.756  362.68950    4.06650   
2019-04-24     381.070       374.23  369.710  363.40250    6.30750   
2019-05-10     361.620       361.04  367.458  368.68800   -1.23000   
2019-05-13     352.290       345.26  360.776  368.39400   -7.61800   
2019-06-07     357.390       360.87  352.752  352.61150    0.14050   
2019-06-10     363.650       352.01  355.828  352.16000    3.66800   
2019-06-13     347.230       343.43  350.628  351.88000   -1.25200   
2019-06-14     341.630       339.73  346.400  350.90100   -4.50100   
2019-06-20     365.910       365.21  355.240  351.89650    3.34350   
2019-06-21     365.000       369.21  361.136  352.74650    8.38950   
2019-07-17     366.250       362.44  369.556  371.29950   -1.74350   
2019-07-18     323.760       325.21  358.698  369.38400  -10.68600   
2019-09-18     294.990       291.56  293.492  292.83900    0.65300   
2019-09-19     291.560       286.60  293.040  292.27850    0.76150   
2019-09-20     280.260       270.75  288.360  290.96950   -2.60950   
2019-09-23     268.345       265.92  282.686  289.69350   -7.00750   
2019-10-11     284.800       282.93  275.224  273.78700    1.43700   
2019-10-14     283.930       285.53  277.438  273.34900    4.08900   
2019-10-24     271.810       271.50  272.562  274.87950   -2.31750   
2019-10-25     270.680       276.82  272.866  275.56650   -2.70050   
2019-10-30     284.340       291.45  280.568  278.03100    2.53700   
2019-10-31     291.000       287.41  283.750  278.99400    4.75600   
2019-12-10     296.120       293.12  302.030  303.86000   -1.83000   
2019-12-11     294.490       298.93  300.952  304.20600   -3.25400   
2019-12-18     316.260       320.80  307.486  307.43100    0.05500   
2019-12-19     324.500       332.22  314.242  308.78400    5.45800   
2020-02-28     364.210       369.03  369.754  372.54350   -2.78950   
2020-03-02     373.110       381.05  372.224  374.34150   -2.11750   
2020-03-26     344.000       362.99  351.160  348.91825    2.24175   
2020-03-27     359.090       357.12  356.018  348.32275    7.69525   
2020-05-27     410.380       419.89  429.580  433.22250   -3.64250   
2020-05-28     417.240       413.44  422.734  433.30000  -10.56600   
2020-06-16     425.760       436.13  427.948  426.72600    1.22200   
2020-06-17     441.820       447.77  430.606  426.56250    4.04350   

            trade_signal  signal_change  entry_exit  
date                                                 
2019-01-04           1.0            1.0         0.0  
2019-01-07           1.0            0.0         1.0  
2019-03-06           0.0           -1.0         0.0  
2019-03-07           0.0            0.0        -1.0  
2019-03-15           1.0            1.0         0.0  
2019-03-18           1.0            0.0         1.0  
2019-03-28           0.0           -1.0         0.0  
2019-03-29           0.0            0.0        -1.0  
2019-04-03           1.0            1.0         0.0  
2019-04-04           1.0            0.0         1.0  
2019-04-12           0.0           -1.0         0.0  
2019-04-15           0.0            0.0        -1.0  
2019-04-23           1.0            1.0         0.0  
2019-04-24           1.0            0.0         1.0  
2019-05-10           0.0           -1.0         0.0  
2019-05-13           0.0            0.0        -1.0  
2019-06-07           1.0            1.0         0.0  
2019-06-10           1.0            0.0         1.0  
2019-06-13           0.0           -1.0         0.0  
2019-06-14           0.0            0.0        -1.0  
2019-06-20           1.0            1.0         0.0  
2019-06-21           1.0            0.0         1.0  
2019-07-17           0.0           -1.0         0.0  
2019-07-18           0.0            0.0        -1.0  
2019-09-18           1.0            1.0         0.0  
2019-09-19           1.0            0.0         1.0  
2019-09-20           0.0           -1.0         0.0  
2019-09-23           0.0            0.0        -1.0  
2019-10-11           1.0            1.0         0.0  
2019-10-14           1.0            0.0         1.0  
2019-10-24           0.0           -1.0         0.0  
2019-10-25           0.0            0.0        -1.0  
2019-10-30           1.0            1.0         0.0  
2019-10-31           1.0            0.0         1.0  
2019-12-10           0.0           -1.0         0.0  
2019-12-11           0.0            0.0        -1.0  
2019-12-18           1.0            1.0         0.0  
2019-12-19           1.0            0.0         1.0  
2020-02-28           0.0           -1.0         0.0  
2020-03-02           0.0            0.0        -1.0  
2020-03-26           1.0            1.0         0.0  
2020-03-27           1.0            0.0         1.0  
2020-05-27           0.0           -1.0         0.0  
2020-05-28           0.0            0.0        -1.0  
2020-06-16           1.0            1.0         0.0  
2020-06-17           1.0            0.0         1.0  

List the signal change and entry/exit points for SMA_005_SlowMA_20_FastMA_10
            open_price  close_price   fast_ma    slow_ma  ma_change  \
date                                                                  
2019-01-08      319.98       320.27  273.8895  269.95675    3.93275   
2019-01-09      317.71       319.96  282.4975  272.46975   10.02775   
2019-02-04      342.60       351.34  334.7780  334.84300   -0.06500   
2019-02-05      353.20       355.81  337.8430  336.86650    0.97650   
2019-02-06      357.00       352.19  340.8630  338.46250    2.40050   
2019-03-11      352.00       358.86  356.9270  357.42050   -0.49350   
2019-03-12      359.37       356.27  356.0570  357.94750   -1.89050   
2019-03-20      358.91       375.22  359.6260  359.41850    0.20750   
2019-03-21      374.00       377.87  362.1530  360.46350    1.68950   
2019-04-05      369.00       365.49  362.8540  363.07400   -0.22000   
2019-04-08      365.11       361.41  362.3720  363.20150   -0.82950   
2019-04-10      365.79       363.92  363.9010  363.75900    0.14200   
2019-04-11      365.00       367.65  365.2050  364.20050    1.00450   
2019-04-15      350.71       348.87  362.8540  362.95600   -0.10200   
2019-04-16      355.00       359.46  362.0280  362.99000   -0.96200   
2019-04-23      375.45       381.89  363.0070  362.68950    0.31750   
2019-04-24      381.07       374.23  363.9590  363.40250    0.55650   
2019-04-26      368.35       374.85  365.1200  365.16250   -0.04250   
2019-04-29      373.68       371.83  367.1890  365.92600    1.26300   
2019-04-30      369.56       370.54  369.3560  366.10500    3.25100   
2019-05-14      348.71       345.61  367.1060  368.23100   -1.12500   
2019-05-15      343.34       354.99  364.7240  368.00750   -3.28350   
2019-06-17      342.69       350.62  350.9750  350.70950    0.26550   
2019-06-18      355.57       357.12  351.3470  351.16000    0.18700   
2019-07-18      323.76       325.21  369.0630  369.38400   -0.32100   
2019-07-19      323.40       315.10  362.5180  366.87850   -4.36050   
2019-10-14      283.93       285.53  274.0200  273.34900    0.67100   
2019-10-15      283.82       284.25  275.4870  272.63150    2.85550   
2019-10-31      291.00       287.41  278.1560  278.99400   -0.83800   
2019-11-01      288.70       286.81  279.3070  279.69500   -0.38800   
2019-11-04      288.00       292.86  280.7880  280.61500    0.17300   
2019-11-05      289.99       288.03  282.9220  281.48050    1.44150   
2019-12-12      295.67       298.44  303.8330  304.97250   -1.13950   
2019-12-13      298.50       298.50  302.2170  305.41650   -3.19950   
2019-12-20      335.00       336.90  310.1100  310.04450    0.06550   
2019-12-23      337.76       333.10  313.1700  311.17550    1.99450   
2020-03-04      377.77       383.79  374.8450  375.61900   -0.77400   
2020-03-05      381.00       372.78  373.5230  375.77450   -2.25150   
2020-03-31      367.93       375.50  350.6880  348.15475    2.53325   
2020-04-01      376.05       364.08  355.5490  347.16925    8.37975   
2020-05-08      434.14       435.55  423.1390  423.74850   -0.60950   
2020-05-11      436.33       440.52  425.0530  425.93850   -0.88550   
2020-05-12      442.00       431.82  427.8520  426.85200    1.00000   
2020-05-13      435.69       438.27  430.4900  427.42800    3.06200   
2020-06-01      418.83       425.92  431.0610  433.82650   -2.76550   
2020-06-02      425.87       427.31  428.5340  433.78450   -5.25050   
2020-06-17      441.82       447.77  427.4980  426.56250    0.93550   
2020-06-18      448.73       449.87  431.0520  426.67250    4.37950   

            trade_signal  signal_change  entry_exit  
date                                                 
2019-01-08           1.0            1.0         0.0  
2019-01-09           1.0            0.0         1.0  
2019-02-04           0.0           -1.0         0.0  
2019-02-05           1.0            1.0        -1.0  
2019-02-06           1.0            0.0         1.0  
2019-03-11           0.0           -1.0         0.0  
2019-03-12           0.0            0.0        -1.0  
2019-03-20           1.0            1.0         0.0  
2019-03-21           1.0            0.0         1.0  
2019-04-05           0.0           -1.0         0.0  
2019-04-08           0.0            0.0        -1.0  
2019-04-10           1.0            1.0         0.0  
2019-04-11           1.0            0.0         1.0  
2019-04-15           0.0           -1.0         0.0  
2019-04-16           0.0            0.0        -1.0  
2019-04-23           1.0            1.0         0.0  
2019-04-24           1.0            0.0         1.0  
2019-04-26           0.0           -1.0         0.0  
2019-04-29           1.0            1.0        -1.0  
2019-04-30           1.0            0.0         1.0  
2019-05-14           0.0           -1.0         0.0  
2019-05-15           0.0            0.0        -1.0  
2019-06-17           1.0            1.0         0.0  
2019-06-18           1.0            0.0         1.0  
2019-07-18           0.0           -1.0         0.0  
2019-07-19           0.0            0.0        -1.0  
2019-10-14           1.0            1.0         0.0  
2019-10-15           1.0            0.0         1.0  
2019-10-31           0.0           -1.0         0.0  
2019-11-01           0.0            0.0        -1.0  
2019-11-04           1.0            1.0         0.0  
2019-11-05           1.0            0.0         1.0  
2019-12-12           0.0           -1.0         0.0  
2019-12-13           0.0            0.0        -1.0  
2019-12-20           1.0            1.0         0.0  
2019-12-23           1.0            0.0         1.0  
2020-03-04           0.0           -1.0         0.0  
2020-03-05           0.0            0.0        -1.0  
2020-03-31           1.0            1.0         0.0  
2020-04-01           1.0            0.0         1.0  
2020-05-08           0.0           -1.0         0.0  
2020-05-11           0.0            0.0        -1.0  
2020-05-12           1.0            1.0         0.0  
2020-05-13           1.0            0.0         1.0  
2020-06-01           0.0           -1.0         0.0  
2020-06-02           0.0            0.0        -1.0  
2020-06-17           1.0            1.0         0.0  
2020-06-18           1.0            0.0         1.0  

List the signal change and entry/exit points for SMA_006_SlowMA_20_FastMA_15
            open_price  close_price     fast_ma    slow_ma  ma_change  \
date                                                                    
2019-01-09     317.710       319.96  273.569000  272.46975   1.099250   
2019-01-10     314.570       324.66  277.150333  275.43675   1.713583   
2019-02-07     347.900       344.71  339.518667  339.70000  -0.181333   
2019-02-08     338.000       347.57  339.144000  340.84550  -1.701500   
2019-02-13     357.300       351.77  343.892000  342.46050   1.431500   
2019-02-14     351.750       359.07  346.052000  342.84450   3.207500   
2019-03-14     360.500       358.82  358.166667  358.36200  -0.195333   
2019-03-15     361.020       361.46  358.062667  358.48150  -0.418833   
2019-03-25     359.000       366.23  361.018667  360.47900   0.539667   
2019-03-26     367.870       359.97  361.396667  360.22900   1.167667   
2019-04-11     365.000       367.65  363.149333  364.20050  -1.051167   
2019-04-12     360.690       351.14  362.491333  363.68450  -1.193167   
2019-04-18     355.000       360.35  361.774000  361.09000   0.684000   
2019-04-22     359.700       377.34  363.159333  361.90650   1.252833   
2019-04-26     368.350       374.85  364.958667  365.16250  -0.203833   
2019-04-29     373.680       371.83  365.381333  365.92600  -0.544667   
2019-05-01     374.000       378.81  366.930000  366.65950   0.270500   
2019-05-02     378.000       379.06  367.939333  367.12500   0.814333   
2019-05-15     343.340       354.99  367.440000  368.00750  -0.567500   
2019-05-16     356.370       359.31  366.838667  368.23600  -1.397333   
2019-06-10     363.650       352.01  352.238667  352.16000   0.078667   
2019-06-11     355.000       351.27  352.449333  352.46050  -0.011167   
2019-06-12     351.820       345.56  351.868667  352.45800  -0.589333   
2019-06-21     365.000       369.21  353.429333  352.74650   0.682833   
2019-06-24     370.270       371.04  355.723333  353.57900   2.144333   
2019-07-22     312.000       310.62  363.206667  363.94900  -0.742333   
2019-07-23     311.440       307.30  358.720000  360.76200  -2.042000   
2019-08-14     308.010       299.11  316.750667  316.37150   0.379167   
2019-08-15     299.500       295.76  314.704000  314.89900  -0.195000   
2019-08-16     298.860       302.80  312.505333  314.28400  -1.778667   
2019-10-16     283.120       286.28  273.649333  272.36750   1.281833   
2019-10-17     304.490       293.35  275.652000  272.70500   2.947000   
2019-11-06     288.190       288.59  282.080000  282.53350  -0.453500   
2019-11-07     290.700       289.57  281.828000  282.98800  -1.160000   
2019-11-11     289.160       294.18  283.988000  283.85250   0.135500   
2019-11-12     295.320       292.01  285.676000  284.24050   1.435500   
2019-12-16     300.850       304.21  305.667333  305.87550  -0.208167   
2019-12-17     307.360       315.48  305.662667  306.52100  -0.858333   
2019-12-24     334.010       333.20  312.128667  312.05800   0.070667   
2019-12-26     334.600       332.63  314.016000  313.06500   0.951000   
2020-01-17     341.000       339.67  333.146667  333.26250  -0.115833   
2020-01-21     340.000       338.11  333.748000  333.55700   0.191000   
2020-01-22     332.550       326.00  333.927333  333.01200   0.915333   
2020-03-09     343.860       346.49  374.044000  374.86150  -0.817500   
2020-03-10     356.425       364.13  372.467333  374.51450  -2.047167   
2020-04-03     367.360       361.76  348.092667  346.67375   1.418917   
2020-04-06     365.220       379.96  353.500667  348.34725   5.153417   
2020-05-11     436.330       440.52  425.256667  425.93850  -0.681833   
2020-05-12     442.000       431.82  425.122667  426.85200  -1.729333   
2020-05-15     440.700       454.19  429.209333  429.12850   0.080833   
2020-05-18     451.160       452.58  431.289333  429.88300   1.406333   
2020-06-02     425.870       427.31  433.610000  433.78450  -0.174500   
2020-06-03     426.950       421.97  432.953333  433.64900  -0.695667   
2020-06-18     448.730       449.87  427.985333  426.67250   1.312833   
2020-06-19     449.120       453.72  430.251333  427.54600   2.705333   

            trade_signal  signal_change  entry_exit  
date                                                 
2019-01-09           1.0            1.0         0.0  
2019-01-10           1.0            0.0         1.0  
2019-02-07           0.0           -1.0         0.0  
2019-02-08           0.0            0.0        -1.0  
2019-02-13           1.0            1.0         0.0  
2019-02-14           1.0            0.0         1.0  
2019-03-14           0.0           -1.0         0.0  
2019-03-15           0.0            0.0        -1.0  
2019-03-25           1.0            1.0         0.0  
2019-03-26           1.0            0.0         1.0  
2019-04-11           0.0           -1.0         0.0  
2019-04-12           0.0            0.0        -1.0  
2019-04-18           1.0            1.0         0.0  
2019-04-22           1.0            0.0         1.0  
2019-04-26           0.0           -1.0         0.0  
2019-04-29           0.0            0.0        -1.0  
2019-05-01           1.0            1.0         0.0  
2019-05-02           1.0            0.0         1.0  
2019-05-15           0.0           -1.0         0.0  
2019-05-16           0.0            0.0        -1.0  
2019-06-10           1.0            1.0         0.0  
2019-06-11           0.0           -1.0         1.0  
2019-06-12           0.0            0.0        -1.0  
2019-06-21           1.0            1.0         0.0  
2019-06-24           1.0            0.0         1.0  
2019-07-22           0.0           -1.0         0.0  
2019-07-23           0.0            0.0        -1.0  
2019-08-14           1.0            1.0         0.0  
2019-08-15           0.0           -1.0         1.0  
2019-08-16           0.0            0.0        -1.0  
2019-10-16           1.0            1.0         0.0  
2019-10-17           1.0            0.0         1.0  
2019-11-06           0.0           -1.0         0.0  
2019-11-07           0.0            0.0        -1.0  
2019-11-11           1.0            1.0         0.0  
2019-11-12           1.0            0.0         1.0  
2019-12-16           0.0           -1.0         0.0  
2019-12-17           0.0            0.0        -1.0  
2019-12-24           1.0            1.0         0.0  
2019-12-26           1.0            0.0         1.0  
2020-01-17           0.0           -1.0         0.0  
2020-01-21           1.0            1.0        -1.0  
2020-01-22           1.0            0.0         1.0  
2020-03-09           0.0           -1.0         0.0  
2020-03-10           0.0            0.0        -1.0  
2020-04-03           1.0            1.0         0.0  
2020-04-06           1.0            0.0         1.0  
2020-05-11           0.0           -1.0         0.0  
2020-05-12           0.0            0.0        -1.0  
2020-05-15           1.0            1.0         0.0  
2020-05-18           1.0            0.0         1.0  
2020-06-02           0.0           -1.0         0.0  
2020-06-03           0.0            0.0        -1.0  
2020-06-18           1.0            1.0         0.0  
2020-06-19           1.0            0.0         1.0  

List the signal change and entry/exit points for SMA_007_SlowMA_25_FastMA_05
            open_price  close_price  fast_ma   slow_ma  ma_change  \
date                                                                
2019-01-04     281.880       297.57  272.034  269.3882     2.6458   
2019-01-07     302.100       315.34  283.886  270.6958    13.1902   
2019-03-08     345.750       349.60  353.430  355.2408    -1.8108   
2019-03-11     352.000       358.86  354.994  356.0012    -1.0072   
2019-03-14     360.500       358.82  356.952  356.6796     0.2724   
2019-03-15     361.020       361.46  359.324  357.3496     1.9744   
2019-03-28     354.485       354.61  359.038  360.1784    -1.1404   
2019-03-29     357.160       356.56  358.148  359.9200    -1.7720   
2019-04-03     369.260       369.75  363.120  360.4272     2.6928   
2019-04-04     370.070       367.88  365.774  360.8184     4.9556   
2019-04-12     360.690       351.14  361.766  362.8124    -1.0464   
2019-04-15     350.710       348.87  359.258  362.4128    -3.1548   
2019-04-23     375.450       381.89  366.756  363.7160     3.0400   
2019-04-24     381.070       374.23  369.710  364.3340     5.3760   
2019-05-10     361.620       361.04  367.458  367.8776    -0.4196   
2019-05-13     352.290       345.26  360.776  367.0684    -6.2924   
2019-06-10     363.650       352.01  355.828  355.2196     0.6084   
2019-06-11     355.000       351.27  355.402  354.1236     1.2784   
2019-06-13     347.230       343.43  350.628  352.2900    -1.6620   
2019-06-14     341.630       339.73  346.400  351.3692    -4.9692   
2019-06-20     365.910       365.21  355.240  352.5520     2.6880   
2019-06-21     365.000       369.21  361.136  352.9480     8.1880   
2019-07-18     323.760       325.21  358.698  365.6840    -6.9860   
2019-07-19     323.400       315.10  347.068  364.5508   -17.4828   
2019-10-14     283.930       285.53  277.438  276.8216     0.6164   
2019-10-15     283.820       284.25  280.144  276.6720     3.4720   
2019-10-24     271.810       271.50  272.562  272.6764    -0.1144   
2019-10-25     270.680       276.82  272.866  272.9192    -0.0532   
2019-10-28     278.050       281.86  273.628  273.5568     0.0712   
2019-10-29     281.870       281.21  276.532  274.6216     1.9104   
2019-12-11     294.490       298.93  300.952  301.6016    -0.6496   
2019-12-12     295.670       298.44  300.068  301.9956    -1.9276   
2019-12-18     316.260       320.80  307.486  304.8620     2.6240   
2019-12-19     324.500       332.22  314.242  306.8264     7.4156   
2020-03-09     343.860       346.49  368.160  373.1052    -4.9452   
2020-03-10     356.425       364.13  367.232  373.3504    -6.1184   
2020-03-27     359.090       357.12  356.018  352.6090     3.4090   
2020-03-30     363.000       370.96  358.156  352.6994     5.4566   
2020-05-27     410.380       419.89  429.580  430.5108    -0.9308   
2020-05-28     417.240       413.44  422.734  430.1916    -7.4576   
2020-06-18     448.730       449.87  435.468  431.2352     4.2328   
2020-06-19     449.120       453.72  442.598  431.7060    10.8920   

            trade_signal  signal_change  entry_exit  
date                                                 
2019-01-04           1.0            1.0         0.0  
2019-01-07           1.0            0.0         1.0  
2019-03-08           0.0           -1.0         0.0  
2019-03-11           0.0            0.0        -1.0  
2019-03-14           1.0            1.0         0.0  
2019-03-15           1.0            0.0         1.0  
2019-03-28           0.0           -1.0         0.0  
2019-03-29           0.0            0.0        -1.0  
2019-04-03           1.0            1.0         0.0  
2019-04-04           1.0            0.0         1.0  
2019-04-12           0.0           -1.0         0.0  
2019-04-15           0.0            0.0        -1.0  
2019-04-23           1.0            1.0         0.0  
2019-04-24           1.0            0.0         1.0  
2019-05-10           0.0           -1.0         0.0  
2019-05-13           0.0            0.0        -1.0  
2019-06-10           1.0            1.0         0.0  
2019-06-11           1.0            0.0         1.0  
2019-06-13           0.0           -1.0         0.0  
2019-06-14           0.0            0.0        -1.0  
2019-06-20           1.0            1.0         0.0  
2019-06-21           1.0            0.0         1.0  
2019-07-18           0.0           -1.0         0.0  
2019-07-19           0.0            0.0        -1.0  
2019-10-14           1.0            1.0         0.0  
2019-10-15           1.0            0.0         1.0  
2019-10-24           0.0           -1.0         0.0  
2019-10-25           0.0            0.0        -1.0  
2019-10-28           1.0            1.0         0.0  
2019-10-29           1.0            0.0         1.0  
2019-12-11           0.0           -1.0         0.0  
2019-12-12           0.0            0.0        -1.0  
2019-12-18           1.0            1.0         0.0  
2019-12-19           1.0            0.0         1.0  
2020-03-09           0.0           -1.0         0.0  
2020-03-10           0.0            0.0        -1.0  
2020-03-27           1.0            1.0         0.0  
2020-03-30           1.0            0.0         1.0  
2020-05-27           0.0           -1.0         0.0  
2020-05-28           0.0            0.0        -1.0  
2020-06-18           1.0            1.0         0.0  
2020-06-19           1.0            0.0         1.0  

List the signal change and entry/exit points for SMA_008_SlowMA_25_FastMA_10
            open_price  close_price   fast_ma   slow_ma  ma_change  \
date                                                                 
2019-01-08      319.98       320.27  273.8895  271.9566     1.9329   
2019-01-09      317.71       319.96  282.4975  273.3098     9.1877   
2019-03-12      359.37       356.27  356.0570  356.1984    -0.1414   
2019-03-13      355.81       361.21  355.8910  356.4144    -0.5234   
2019-03-20      358.91       375.22  359.6260  359.1164     0.5096   
2019-03-21      374.00       377.87  362.1530  360.1604     1.9926   
2019-04-16      355.00       359.46  362.0280  362.5404    -0.5124   
2019-04-17      365.05       354.74  360.5270  362.2816    -1.7546   
2019-04-25      374.49       368.33  364.4000  364.0584     0.3416   
2019-04-26      368.35       374.85  365.1200  363.9376     1.1824   
2019-05-15      343.34       354.99  364.7240  366.0476    -1.3236   
2019-05-16      356.37       359.31  362.7490  365.8632    -3.1142   
2019-06-17      342.69       350.62  350.9750  350.9524     0.0226   
2019-06-18      355.57       357.12  351.3470  351.4268    -0.0798   
2019-06-19      361.72       363.52  352.1260  352.1432    -0.0172   
2019-06-20      365.91       365.21  352.9340  352.5520     0.3820   
2019-06-21      365.00       369.21  353.7680  352.9480     0.8200   
2019-07-19      323.40       315.10  362.5180  364.5508    -2.0328   
2019-07-22      312.00       310.62  355.9640  363.3864    -7.4224   
2019-10-16      283.12       286.28  277.3120  276.5924     0.7196   
2019-10-17      304.49       293.35  279.8320  276.7720     3.0600   
2019-12-13      298.50       298.50  302.2170  302.3528    -0.1358   
2019-12-16      300.85       304.21  301.6390  302.8584    -1.2194   
2019-12-19      324.50       332.22  307.1550  306.8264     0.3286   
2019-12-20      335.00       336.90  310.1100  308.7176     1.3924   
2020-03-06      367.70       368.97  372.4130  373.0492    -0.6362   
2020-03-09      343.86       346.49  370.1920  373.1052    -2.9132   
2020-04-01      376.05       364.08  355.5490  352.7094     2.8396   
2020-04-02      364.08       370.08  359.3540  352.6442     6.7098   
2020-06-02      425.87       427.31  428.5340  430.1872    -1.6532   
2020-06-03      426.95       421.97  425.6270  430.9128    -5.2858   
2020-06-19      449.12       453.72  434.4640  431.7060     2.7580   
2020-06-22      455.01       468.04  439.3190  432.2600     7.0590   

            trade_signal  signal_change  entry_exit  
date                                                 
2019-01-08           1.0            1.0         0.0  
2019-01-09           1.0            0.0         1.0  
2019-03-12           0.0           -1.0         0.0  
2019-03-13           0.0            0.0        -1.0  
2019-03-20           1.0            1.0         0.0  
2019-03-21           1.0            0.0         1.0  
2019-04-16           0.0           -1.0         0.0  
2019-04-17           0.0            0.0        -1.0  
2019-04-25           1.0            1.0         0.0  
2019-04-26           1.0            0.0         1.0  
2019-05-15           0.0           -1.0         0.0  
2019-05-16           0.0            0.0        -1.0  
2019-06-17           1.0            1.0         0.0  
2019-06-18           0.0           -1.0         1.0  
2019-06-19           0.0            0.0        -1.0  
2019-06-20           1.0            1.0         0.0  
2019-06-21           1.0            0.0         1.0  
2019-07-19           0.0           -1.0         0.0  
2019-07-22           0.0            0.0        -1.0  
2019-10-16           1.0            1.0         0.0  
2019-10-17           1.0            0.0         1.0  
2019-12-13           0.0           -1.0         0.0  
2019-12-16           0.0            0.0        -1.0  
2019-12-19           1.0            1.0         0.0  
2019-12-20           1.0            0.0         1.0  
2020-03-06           0.0           -1.0         0.0  
2020-03-09           0.0            0.0        -1.0  
2020-04-01           1.0            1.0         0.0  
2020-04-02           1.0            0.0         1.0  
2020-06-02           0.0           -1.0         0.0  
2020-06-03           0.0            0.0        -1.0  
2020-06-19           1.0            1.0         0.0  
2020-06-22           1.0            0.0         1.0  

List the signal change and entry/exit points for SMA_009_SlowMA_25_FastMA_15
            open_price  close_price     fast_ma   slow_ma  ma_change  \
date                                                                   
2019-01-09     317.710       319.96  273.569000  273.3098   0.259200   
2019-01-10     314.570       324.66  277.150333  274.6842   2.466133   
2019-03-19     366.400       358.78  357.618667  358.5064  -0.887733   
2019-03-20     358.910       375.22  358.442000  359.1164  -0.674400   
2019-03-25     359.000       366.23  361.018667  360.6124   0.406267   
2019-03-26     367.870       359.97  361.396667  360.5344   0.862267   
2019-04-12     360.690       351.14  362.491333  362.8124  -0.321067   
2019-04-15     350.710       348.87  361.334000  362.4128  -1.078800   
2019-04-22     359.700       377.34  363.159333  362.9780   0.181333   
2019-04-23     375.450       381.89  364.154667  363.7160   0.438667   
2019-05-20     351.230       348.11  363.897333  365.2140  -1.316667   
2019-05-21     350.950       354.27  362.812667  365.4300  -2.617333   
2019-06-21     365.000       369.21  353.429333  352.9480   0.481333   
2019-06-24     370.270       371.04  355.723333  353.6116   2.111733   
2019-07-22     312.000       310.62  363.206667  363.3864  -0.179733   
2019-07-23     311.440       307.30  358.720000  361.6536  -2.933600   
2019-10-18     289.360       275.30  276.466667  276.0180   0.448667   
2019-10-21     272.890       278.05  277.162000  275.3684   1.793600   
2020-03-10     356.425       364.13  372.467333  373.3504  -0.883067   
2020-03-11     358.920       349.92  370.049333  372.5868  -2.537467   
2020-04-06     365.220       379.96  353.500667  352.3098   1.190867   
2020-04-07     380.000       372.28  357.002667  352.4502   4.552467   
2020-06-05     407.290       419.60  429.867333  431.0004  -1.133067   
2020-06-08     416.000       419.49  427.554000  431.1692  -3.615200   
2020-06-22     455.010       468.04  433.059333  432.2600   0.799333   
2020-06-23     466.500       466.26  435.656000  432.8072   2.848800   

            trade_signal  signal_change  entry_exit  
date                                                 
2019-01-09           1.0            1.0         0.0  
2019-01-10           1.0            0.0         1.0  
2019-03-19           0.0           -1.0         0.0  
2019-03-20           0.0            0.0        -1.0  
2019-03-25           1.0            1.0         0.0  
2019-03-26           1.0            0.0         1.0  
2019-04-12           0.0           -1.0         0.0  
2019-04-15           0.0            0.0        -1.0  
2019-04-22           1.0            1.0         0.0  
2019-04-23           1.0            0.0         1.0  
2019-05-20           0.0           -1.0         0.0  
2019-05-21           0.0            0.0        -1.0  
2019-06-21           1.0            1.0         0.0  
2019-06-24           1.0            0.0         1.0  
2019-07-22           0.0           -1.0         0.0  
2019-07-23           0.0            0.0        -1.0  
2019-10-18           1.0            1.0         0.0  
2019-10-21           1.0            0.0         1.0  
2020-03-10           0.0           -1.0         0.0  
2020-03-11           0.0            0.0        -1.0  
2020-04-06           1.0            1.0         0.0  
2020-04-07           1.0            0.0         1.0  
2020-06-05           0.0           -1.0         0.0  
2020-06-08           0.0            0.0        -1.0  
2020-06-22           1.0            1.0         0.0  
2020-06-23           1.0            0.0         1.0  

List the signal change and entry/exit points for SMA_010_SlowMA_25_FastMA_20
            open_price  close_price    fast_ma   slow_ma  ma_change  \
date                                                                  
2019-01-10     314.570      324.660  275.43675  274.6842    0.75255   
2019-01-11     330.960      337.590  278.57225  277.1746    1.39765   
2019-02-15     358.470      356.870  343.02850  343.6128   -0.58430   
2019-02-19     355.800      361.920  344.16950  344.5860   -0.41650   
2019-02-20     364.850      359.910  345.90700  345.6648    0.24220   
2019-02-21     360.030      356.970  347.65600  345.7580    1.89800   
2019-03-25     359.000      366.230  360.47900  360.6124   -0.13340   
2019-03-26     367.870      359.970  360.22900  360.5344   -0.30540   
2019-04-01     359.000      366.960  360.33750  360.0420    0.29550   
2019-04-02     366.250      367.720  361.00850  360.1520    0.85650   
2019-04-17     365.050      354.740  361.96600  362.2816   -0.31560   
2019-04-18     355.000      360.350  361.09000  362.3428   -1.25280   
2019-04-25     374.490      368.330  364.15050  364.0584    0.09210   
2019-04-26     368.350      374.850  365.16250  363.9376    1.22490   
2019-05-21     350.950      354.270  365.09850  365.4300   -0.33150   
2019-05-22     358.010      359.730  364.37350  365.4408   -1.06730   
2019-06-26     361.600      362.200  354.50550  354.4164    0.08910   
2019-06-27     363.200      370.020  355.41400  354.8280    0.58600   
2019-07-23     311.440      307.300  360.76200  361.6536   -0.89160   
2019-07-24     310.510      317.940  358.64400  360.0864   -1.44240   
2019-10-22     271.159      266.690  274.14400  274.0920    0.05200   
2019-10-23     268.060      271.270  274.47000  273.2804    1.18960   
2019-11-14     283.250      289.620  283.89550  284.4100   -0.51450   
2019-11-15     290.590      295.030  284.88200  284.8940   -0.01200   
2019-11-18     296.000      302.570  286.10800  285.5756    0.53240   
2019-11-19     304.010      302.600  287.90350  286.3096    1.59390   
2020-03-12     326.500      315.250  370.08800  370.4100   -0.32200   
2020-03-13     330.510      336.295  367.83275  369.1838   -1.35105   
2020-04-09     371.060      370.720  352.58825  351.8610    0.72725   
2020-04-13     371.310      396.720  355.60950  352.9710    2.63850   
2020-05-19     453.397      451.040  430.74350  431.0028   -0.25930   
2020-05-20     454.250      447.670  432.05600  431.8396    0.21640   
2020-05-21     448.560      436.250  432.53350  431.7228    0.81070   
2020-06-08     416.000      419.490  431.00300  431.1692   -0.16620   
2020-06-09     421.650      434.050  430.67950  431.4052   -0.72570   
2020-06-24     468.540      457.850  433.95450  433.0796    0.87490   
2020-06-25     458.860      465.910  436.57800  433.8092    2.76880   

            trade_signal  signal_change  entry_exit  
date                                                 
2019-01-10           1.0            1.0         0.0  
2019-01-11           1.0            0.0         1.0  
2019-02-15           0.0           -1.0         0.0  
2019-02-19           0.0            0.0        -1.0  
2019-02-20           1.0            1.0         0.0  
2019-02-21           1.0            0.0         1.0  
2019-03-25           0.0           -1.0         0.0  
2019-03-26           0.0            0.0        -1.0  
2019-04-01           1.0            1.0         0.0  
2019-04-02           1.0            0.0         1.0  
2019-04-17           0.0           -1.0         0.0  
2019-04-18           0.0            0.0        -1.0  
2019-04-25           1.0            1.0         0.0  
2019-04-26           1.0            0.0         1.0  
2019-05-21           0.0           -1.0         0.0  
2019-05-22           0.0            0.0        -1.0  
2019-06-26           1.0            1.0         0.0  
2019-06-27           1.0            0.0         1.0  
2019-07-23           0.0           -1.0         0.0  
2019-07-24           0.0            0.0        -1.0  
2019-10-22           1.0            1.0         0.0  
2019-10-23           1.0            0.0         1.0  
2019-11-14           0.0           -1.0         0.0  
2019-11-15           0.0            0.0        -1.0  
2019-11-18           1.0            1.0         0.0  
2019-11-19           1.0            0.0         1.0  
2020-03-12           0.0           -1.0         0.0  
2020-03-13           0.0            0.0        -1.0  
2020-04-09           1.0            1.0         0.0  
2020-04-13           1.0            0.0         1.0  
2020-05-19           0.0           -1.0         0.0  
2020-05-20           1.0            1.0        -1.0  
2020-05-21           1.0            0.0         1.0  
2020-06-08           0.0           -1.0         0.0  
2020-06-09           0.0            0.0        -1.0  
2020-06-24           1.0            1.0         0.0  
2020-06-25           1.0            0.0         1.0  

List the signal change and entry/exit points for SMA_011_SlowMA_30_FastMA_05
            open_price  close_price  fast_ma     slow_ma  ma_change  \
date                                                                  
2019-01-04     281.880       297.57  272.034  268.356500   3.677500   
2019-01-07     302.100       315.34  283.886  269.968500  13.917500   
2019-03-28     354.485       354.61  359.038  359.973333  -0.935333   
2019-03-29     357.160       356.56  358.148  359.889667  -1.741667   
2019-04-03     369.260       369.75  363.120  360.747333   2.372667   
2019-04-04     370.070       367.88  365.774  361.111000   4.663000   
2019-04-15     350.710       348.87  359.258  361.176333  -1.918333   
2019-04-16     355.000       359.46  358.208  361.348333  -3.140333   
2019-04-23     375.450       381.89  366.756  363.136667   3.619333   
2019-04-24     381.070       374.23  369.710  363.735333   5.974667   
2019-05-10     361.620       361.04  367.458  367.527000  -0.069000   
2019-05-13     352.290       345.26  360.776  367.150333  -6.374333   
2019-06-20     365.910       365.21  355.240  352.781667   2.458333   
2019-06-21     365.000       369.21  361.136  352.997000   8.139000   
2019-07-18     323.760       325.21  358.698  363.631333  -4.933333   
2019-07-19     323.400       315.10  347.068  362.230333 -15.162333   
2019-10-15     283.820       284.25  280.144  279.135667   1.008333   
2019-10-16     283.120       286.28  283.894  278.961000   4.933000   
2019-10-24     271.810       271.50  272.562  276.070333  -3.508333   
2019-10-25     270.680       276.82  272.866  275.492667  -2.626667   
2019-10-29     281.870       281.21  276.532  274.498667   2.033333   
2019-10-30     284.340       291.45  280.568  274.495000   6.073000   
2019-12-13     298.500       298.50  298.298  300.156000  -1.858000   
2019-12-16     300.850       304.21  298.640  300.736000  -2.096000   
2019-12-17     307.360       315.48  303.112  301.490000   1.622000   
2019-12-18     316.260       320.80  307.486  302.582333   4.903667   
2020-03-09     343.860       346.49  368.160  368.500667  -0.340667   
2020-03-10     356.425       364.13  367.232  369.209000  -1.977000   
2020-03-30     363.000       370.96  358.156  357.540833   0.615167   
2020-03-31     367.930       375.50  361.792  357.131500   4.660500   
2020-05-27     410.380       419.89  429.580  430.765667  -1.185667   
2020-05-28     417.240       413.44  422.734  430.322000  -7.588000   
2020-06-18     448.730       449.87  435.468  432.119000   3.349000   
2020-06-19     449.120       453.72  442.598  432.692000   9.906000   

            trade_signal  signal_change  entry_exit  
date                                                 
2019-01-04           1.0            1.0         0.0  
2019-01-07           1.0            0.0         1.0  
2019-03-28           0.0           -1.0         0.0  
2019-03-29           0.0            0.0        -1.0  
2019-04-03           1.0            1.0         0.0  
2019-04-04           1.0            0.0         1.0  
2019-04-15           0.0           -1.0         0.0  
2019-04-16           0.0            0.0        -1.0  
2019-04-23           1.0            1.0         0.0  
2019-04-24           1.0            0.0         1.0  
2019-05-10           0.0           -1.0         0.0  
2019-05-13           0.0            0.0        -1.0  
2019-06-20           1.0            1.0         0.0  
2019-06-21           1.0            0.0         1.0  
2019-07-18           0.0           -1.0         0.0  
2019-07-19           0.0            0.0        -1.0  
2019-10-15           1.0            1.0         0.0  
2019-10-16           1.0            0.0         1.0  
2019-10-24           0.0           -1.0         0.0  
2019-10-25           0.0            0.0        -1.0  
2019-10-29           1.0            1.0         0.0  
2019-10-30           1.0            0.0         1.0  
2019-12-13           0.0           -1.0         0.0  
2019-12-16           0.0            0.0        -1.0  
2019-12-17           1.0            1.0         0.0  
2019-12-18           1.0            0.0         1.0  
2020-03-09           0.0           -1.0         0.0  
2020-03-10           0.0            0.0        -1.0  
2020-03-30           1.0            1.0         0.0  
2020-03-31           1.0            0.0         1.0  
2020-05-27           0.0           -1.0         0.0  
2020-05-28           0.0            0.0        -1.0  
2020-06-18           1.0            1.0         0.0  
2020-06-19           1.0            0.0         1.0  

List the signal change and entry/exit points for SMA_012_SlowMA_30_FastMA_10
            open_price  close_price   fast_ma     slow_ma  ma_change  \
date                                                                   
2019-01-08      319.98       320.27  273.8895  271.906500   1.983000   
2019-01-09      317.71       319.96  282.4975  273.944500   8.553000   
2019-04-17      365.05       354.74  360.5270  361.186000  -0.659000   
2019-04-18      355.00       360.35  359.7740  361.444333  -1.670333   
2019-04-24      381.07       374.23  363.9590  363.735333   0.223667   
2019-04-25      374.49       368.33  364.4000  363.972667   0.427333   
2019-05-15      343.34       354.99  364.7240  366.014333  -1.290333   
2019-05-16      356.37       359.31  362.7490  365.666333  -2.917333   
2019-06-20      365.91       365.21  352.9340  352.781667   0.152333   
2019-06-21      365.00       369.21  353.7680  352.997000   0.771000   
2019-07-22      312.00       310.62  355.9640  360.555333  -4.591333   
2019-07-23      311.44       307.30  348.7010  359.065000 -10.364000   
2019-10-17      304.49       293.35  279.8320  278.964333   0.867667   
2019-10-18      289.36       275.30  280.0830  278.468667   1.614333   
2020-03-11      358.92       349.92  367.6640  369.255667  -1.591667   
2020-03-12      326.50       315.25  362.0180  368.325333  -6.307333   
2020-04-02      364.08       370.08  359.3540  355.863833   3.490167   
2020-04-03      367.36       361.76  362.2470  355.253500   6.993500   
2020-06-02      425.87       427.31  428.5340  429.433333  -0.899333   
2020-06-03      426.95       421.97  425.6270  429.038000  -3.411000   
2020-06-19      449.12       453.72  434.4640  432.692000   1.772000   
2020-06-22      455.01       468.04  439.3190  433.775000   5.544000   

            trade_signal  signal_change  entry_exit  
date                                                 
2019-01-08           1.0            1.0         0.0  
2019-01-09           1.0            0.0         1.0  
2019-04-17           0.0           -1.0         0.0  
2019-04-18           0.0            0.0        -1.0  
2019-04-24           1.0            1.0         0.0  
2019-04-25           1.0            0.0         1.0  
2019-05-15           0.0           -1.0         0.0  
2019-05-16           0.0            0.0        -1.0  
2019-06-20           1.0            1.0         0.0  
2019-06-21           1.0            0.0         1.0  
2019-07-22           0.0           -1.0         0.0  
2019-07-23           0.0            0.0        -1.0  
2019-10-17           1.0            1.0         0.0  
2019-10-18           1.0            0.0         1.0  
2020-03-11           0.0           -1.0         0.0  
2020-03-12           0.0            0.0        -1.0  
2020-04-02           1.0            1.0         0.0  
2020-04-03           1.0            0.0         1.0  
2020-06-02           0.0           -1.0         0.0  
2020-06-03           0.0            0.0        -1.0  
2020-06-19           1.0            1.0         0.0  
2020-06-22           1.0            0.0         1.0  

List the signal change and entry/exit points for SMA_013_SlowMA_30_FastMA_15
            open_price  close_price     fast_ma     slow_ma  ma_change  \
date                                                                     
2019-01-10      314.57      324.660  277.150333  276.052167   1.098167   
2019-01-11      330.96      337.590  281.871667  278.417500   3.454167   
2019-04-16      355.00      359.460  361.300000  361.348333  -0.048333   
2019-04-17      365.05      354.740  361.391333  361.186000   0.205333   
2019-04-18      355.00      360.350  361.774000  361.444333   0.329667   
2019-05-20      351.23      348.110  363.897333  364.639333  -0.742000   
2019-05-21      350.95      354.270  362.812667  364.401333  -1.588667   
2019-06-21      365.00      369.210  353.429333  352.997000   0.432333   
2019-06-24      370.27      371.040  355.723333  353.330333   2.393000   
2019-07-23      311.44      307.300  358.720000  359.065000  -0.345000   
2019-07-24      310.51      317.940  354.887333  357.954000  -3.066667   
2019-10-23      268.06      271.270  277.185333  276.649000   0.536333   
2019-10-24      271.81      271.500  277.408667  276.070333   1.338333   
2020-03-12      326.50      315.250  365.332667  368.325333  -2.992667   
2020-03-13      330.51      336.295  362.414333  367.943833  -5.529500   
2020-04-07      380.00      372.280  357.002667  356.035167   0.967500   
2020-04-08      374.01      371.120  360.712667  355.764500   4.948167   
2020-06-08      416.00      419.490  427.554000  428.381667  -0.827667   
2020-06-09      421.65      434.050  426.318667  428.804000  -2.485333   
2020-06-23      466.50      466.260  435.656000  434.633000   1.023000   
2020-06-24      468.54      457.850  438.048000  435.500667   2.547333   

            trade_signal  signal_change  entry_exit  
date                                                 
2019-01-10           1.0            1.0         0.0  
2019-01-11           1.0            0.0         1.0  
2019-04-16           0.0           -1.0         0.0  
2019-04-17           1.0            1.0        -1.0  
2019-04-18           1.0            0.0         1.0  
2019-05-20           0.0           -1.0         0.0  
2019-05-21           0.0            0.0        -1.0  
2019-06-21           1.0            1.0         0.0  
2019-06-24           1.0            0.0         1.0  
2019-07-23           0.0           -1.0         0.0  
2019-07-24           0.0            0.0        -1.0  
2019-10-23           1.0            1.0         0.0  
2019-10-24           1.0            0.0         1.0  
2020-03-12           0.0           -1.0         0.0  
2020-03-13           0.0            0.0        -1.0  
2020-04-07           1.0            1.0         0.0  
2020-04-08           1.0            0.0         1.0  
2020-06-08           0.0           -1.0         0.0  
2020-06-09           0.0            0.0        -1.0  
2020-06-23           1.0            1.0         0.0  
2020-06-24           1.0            0.0         1.0  

List the signal change and entry/exit points for SMA_014_SlowMA_30_FastMA_20
            open_price  close_price    fast_ma     slow_ma  ma_change  \
date                                                                    
2019-01-11     330.960      337.590  278.57225  278.417500   0.154750   
2019-01-14     334.240      332.940  281.41825  280.093833   1.324417   
2019-03-27     361.000      353.370  359.75400  359.878667  -0.124667   
2019-03-28     354.485      354.610  359.57950  359.973333  -0.393833   
2019-04-01     359.000      366.960  360.33750  360.226000   0.111500   
2019-04-02     366.250      367.720  361.00850  360.419333   0.589167   
2019-04-18     355.000      360.350  361.09000  361.444333  -0.354333   
2019-04-22     359.700      377.340  361.90650  362.369000  -0.462500   
2019-04-25     374.490      368.330  364.15050  363.972667   0.177833   
2019-04-26     368.350      374.850  365.16250  364.507000   0.655500   
2019-05-23     355.500      352.210  363.56750  363.845000  -0.277500   
2019-05-24     355.410      354.390  362.54450  363.403000  -0.858500   
2019-06-24     370.270      371.040  353.57900  353.330333   0.248667   
2019-06-25     370.750      360.300  353.85500  353.831667   0.023333   
2019-07-25     318.860      326.460  356.85700  357.317333  -0.460333   
2019-07-26     328.790      335.780  355.14500  357.062333  -1.917333   
2019-10-25     270.680      276.820  275.56650  275.492667   0.073833   
2019-10-28     278.050      281.860  276.27850  275.078333   1.200167   
2020-03-13     330.510      336.295  367.83275  367.943833  -0.111083   
2020-03-16     306.630      298.840  363.75475  366.402167  -2.647417   
2020-04-14     397.500      413.550  361.34500  357.737833   3.607167   
2020-04-15     413.000      426.750  366.69500  359.670500   7.024500   
2020-06-11     428.200      425.560  430.17700  430.281333  -0.104333   
2020-06-12     429.000      418.070  428.98300  430.222000  -1.239000   
2020-06-25     458.860      465.910  436.57800  436.422000   0.156000   
2020-06-26     466.390      443.400  437.76150  436.470333   1.291167   

            trade_signal  signal_change  entry_exit  
date                                                 
2019-01-11           1.0            1.0         0.0  
2019-01-14           1.0            0.0         1.0  
2019-03-27           0.0           -1.0         0.0  
2019-03-28           0.0            0.0        -1.0  
2019-04-01           1.0            1.0         0.0  
2019-04-02           1.0            0.0         1.0  
2019-04-18           0.0           -1.0         0.0  
2019-04-22           0.0            0.0        -1.0  
2019-04-25           1.0            1.0         0.0  
2019-04-26           1.0            0.0         1.0  
2019-05-23           0.0           -1.0         0.0  
2019-05-24           0.0            0.0        -1.0  
2019-06-24           1.0            1.0         0.0  
2019-06-25           1.0            0.0         1.0  
2019-07-25           0.0           -1.0         0.0  
2019-07-26           0.0            0.0        -1.0  
2019-10-25           1.0            1.0         0.0  
2019-10-28           1.0            0.0         1.0  
2020-03-13           0.0           -1.0         0.0  
2020-03-16           0.0            0.0        -1.0  
2020-04-14           1.0            1.0         0.0  
2020-04-15           1.0            0.0         1.0  
2020-06-11           0.0           -1.0         0.0  
2020-06-12           0.0            0.0        -1.0  
2020-06-25           1.0            1.0         0.0  
2020-06-26           1.0            0.0         1.0  

List the signal change and entry/exit points for SMA_015_SlowMA_35_FastMA_05
            open_price  close_price  fast_ma     slow_ma  ma_change  \
date                                                                  
2019-01-04      281.88       297.57  272.034  270.819857   1.214143   
2019-01-07      302.10       315.34  283.886  271.418143  12.467857   
2019-03-29      357.16       356.56  358.148  358.880000  -0.732000   
2019-04-01      359.00       366.96  358.294  359.434000  -1.140000   
2019-04-03      369.26       369.75  363.120  360.341714   2.778286   
2019-04-04      370.07       367.88  365.774  360.802000   4.972000   
2019-04-15      350.71       348.87  359.258  360.845429  -1.587429   
2019-04-16      355.00       359.46  358.208  360.688000  -2.480000   
2019-04-23      375.45       381.89  366.756  361.973429   4.782571   
2019-04-24      381.07       374.23  369.710  362.542857   7.167143   
2019-05-13      352.29       345.26  360.776  365.864286  -5.088286   
2019-05-14      348.71       345.61  355.806  365.275143  -9.469143   
2019-06-21      365.00       369.21  361.136  355.748286   5.387714   
2019-06-24      370.27       371.04  365.220  355.348571   9.871429   
2019-07-18      323.76       325.21  358.698  361.423714  -2.725714   
2019-07-19      323.40       315.10  347.068  360.373714 -13.305714   
2019-10-16      283.12       286.28  283.894  280.912571   2.981429   
2019-10-17      304.49       293.35  286.468  280.957714   5.510286   
2019-10-23      268.06       271.27  276.932  278.671143  -1.739143   
2019-10-24      271.81       271.50  272.562  278.049714  -5.487714   
2019-10-30      284.34       291.45  280.568  277.208857   3.359143   
2019-10-31      291.00       287.41  283.750  277.167429   6.582571   
2020-03-11      358.92       349.92  360.458  365.652286  -5.194286   
2020-03-12      326.50       315.25  348.952  365.345143 -16.393143   
2020-03-31      367.93       375.50  361.792  360.492143   1.299857   
2020-04-01      376.05       364.08  366.130  360.217571   5.912429   
2020-05-28      417.24       413.44  422.734  425.386286  -2.652286   
2020-05-29      417.46       419.73  419.430  426.775143  -7.345143   
2020-06-17      441.82       447.77  430.606  429.937143   0.668857   
2020-06-18      448.73       449.87  435.468  431.022286   4.445714   

            trade_signal  signal_change  entry_exit  
date                                                 
2019-01-04           1.0            1.0         0.0  
2019-01-07           1.0            0.0         1.0  
2019-03-29           0.0           -1.0         0.0  
2019-04-01           0.0            0.0        -1.0  
2019-04-03           1.0            1.0         0.0  
2019-04-04           1.0            0.0         1.0  
2019-04-15           0.0           -1.0         0.0  
2019-04-16           0.0            0.0        -1.0  
2019-04-23           1.0            1.0         0.0  
2019-04-24           1.0            0.0         1.0  
2019-05-13           0.0           -1.0         0.0  
2019-05-14           0.0            0.0        -1.0  
2019-06-21           1.0            1.0         0.0  
2019-06-24           1.0            0.0         1.0  
2019-07-18           0.0           -1.0         0.0  
2019-07-19           0.0            0.0        -1.0  
2019-10-16           1.0            1.0         0.0  
2019-10-17           1.0            0.0         1.0  
2019-10-23           0.0           -1.0         0.0  
2019-10-24           0.0            0.0        -1.0  
2019-10-30           1.0            1.0         0.0  
2019-10-31           1.0            0.0         1.0  
2020-03-11           0.0           -1.0         0.0  
2020-03-12           0.0            0.0        -1.0  
2020-03-31           1.0            1.0         0.0  
2020-04-01           1.0            0.0         1.0  
2020-05-28           0.0           -1.0         0.0  
2020-05-29           0.0            0.0        -1.0  
2020-06-17           1.0            1.0         0.0  
2020-06-18           1.0            0.0         1.0  

List the signal change and entry/exit points for SMA_016_SlowMA_35_FastMA_10
            open_price  close_price   fast_ma     slow_ma  ma_change  \
date                                                                   
2019-01-08     319.980      320.270  273.8895  272.376429   1.513071   
2019-01-09     317.710      319.960  282.4975  273.230714   9.266786   
2019-04-18     355.000      360.350  359.7740  360.520000  -0.746000   
2019-04-22     359.700      377.340  360.9590  361.092000  -0.133000   
2019-04-23     375.450      381.890  363.0070  361.973429   1.033571   
2019-04-24     381.070      374.230  363.9590  362.542857   1.416143   
2019-05-15     343.340      354.990  364.7240  365.132857  -0.408857   
2019-05-16     356.370      359.310  362.7490  365.302571  -2.553571   
2019-06-24     370.270      371.040  355.6710  355.348571   0.322429   
2019-06-25     370.750      360.300  356.5740  354.823714   1.750286   
2019-07-22     312.000      310.620  355.9640  359.440571  -3.476571   
2019-07-23     311.440      307.300  348.7010  358.602571  -9.901571   
2019-10-21     272.890      278.050  280.4420  279.895429   0.546571   
2019-10-22     271.159      266.690  280.0390  279.249714   0.789286   
2020-03-12     326.500      315.250  362.0180  365.345143  -3.327143   
2020-03-13     330.510      336.295  358.7445  364.965000  -6.220500   
2020-04-03     367.360      361.760  362.2470  359.372714   2.874286   
2020-04-06     365.220      379.960  364.2160  359.360143   4.855857   
2020-06-02     425.870      427.310  428.5340  429.226286  -0.692286   
2020-06-03     426.950      421.970  425.6270  429.466857  -3.839857   
2020-06-18     448.730      449.870  431.0520  431.022286   0.029714   
2020-06-19     449.120      453.720  434.4640  431.990000   2.474000   

            trade_signal  signal_change  entry_exit  
date                                                 
2019-01-08           1.0            1.0         0.0  
2019-01-09           1.0            0.0         1.0  
2019-04-18           0.0           -1.0         0.0  
2019-04-22           0.0            0.0        -1.0  
2019-04-23           1.0            1.0         0.0  
2019-04-24           1.0            0.0         1.0  
2019-05-15           0.0           -1.0         0.0  
2019-05-16           0.0            0.0        -1.0  
2019-06-24           1.0            1.0         0.0  
2019-06-25           1.0            0.0         1.0  
2019-07-22           0.0           -1.0         0.0  
2019-07-23           0.0            0.0        -1.0  
2019-10-21           1.0            1.0         0.0  
2019-10-22           1.0            0.0         1.0  
2020-03-12           0.0           -1.0         0.0  
2020-03-13           0.0            0.0        -1.0  
2020-04-03           1.0            1.0         0.0  
2020-04-06           1.0            0.0         1.0  
2020-06-02           0.0           -1.0         0.0  
2020-06-03           0.0            0.0        -1.0  
2020-06-18           1.0            1.0         0.0  
2020-06-19           1.0            0.0         1.0  

List the signal change and entry/exit points for SMA_017_SlowMA_35_FastMA_15
            open_price  close_price     fast_ma     slow_ma  ma_change  \
date                                                                     
2019-01-09      317.71      319.960  273.569000  273.230714   0.338286   
2019-01-10      314.57      324.660  277.150333  274.329286   2.821048   
2019-05-20      351.23      348.110  363.897333  365.056571  -1.159238   
2019-05-21      350.95      354.270  362.812667  364.694000  -1.881333   
2019-06-24      370.27      371.040  355.723333  355.348571   0.374762   
2019-06-25      370.75      360.300  356.183333  354.823714   1.359619   
2019-07-24      310.51      317.940  354.887333  357.589429  -2.702095   
2019-07-25      318.86      326.460  351.203333  356.753143  -5.549810   
2019-10-25      270.68      276.820  277.677333  277.668286   0.009048   
2019-10-28      278.05      281.860  278.170667  277.311714   0.858952   
2020-03-12      326.50      315.250  365.332667  365.345143  -0.012476   
2020-03-13      330.51      336.295  362.414333  364.965000  -2.550667   
2020-04-08      374.01      371.120  360.712667  358.486714   2.225952   
2020-04-09      371.06      370.720  363.292000  358.050143   5.241857   
2020-06-08      416.00      419.490  427.554000  428.453714  -0.899714   
2020-06-09      421.65      434.050  426.318667  428.355429  -2.036762   
2020-06-23      466.50      466.260  435.656000  434.586571   1.069429   
2020-06-24      468.54      457.850  438.048000  435.534286   2.513714   

            trade_signal  signal_change  entry_exit  
date                                                 
2019-01-09           1.0            1.0         0.0  
2019-01-10           1.0            0.0         1.0  
2019-05-20           0.0           -1.0         0.0  
2019-05-21           0.0            0.0        -1.0  
2019-06-24           1.0            1.0         0.0  
2019-06-25           1.0            0.0         1.0  
2019-07-24           0.0           -1.0         0.0  
2019-07-25           0.0            0.0        -1.0  
2019-10-25           1.0            1.0         0.0  
2019-10-28           1.0            0.0         1.0  
2020-03-12           0.0           -1.0         0.0  
2020-03-13           0.0            0.0        -1.0  
2020-04-08           1.0            1.0         0.0  
2020-04-09           1.0            0.0         1.0  
2020-06-08           0.0           -1.0         0.0  
2020-06-09           0.0            0.0        -1.0  
2020-06-23           1.0            1.0         0.0  
2020-06-24           1.0            0.0         1.0  

List the signal change and entry/exit points for SMA_018_SlowMA_35_FastMA_20
            open_price  close_price    fast_ma     slow_ma  ma_change  \
date                                                                    
2019-01-10     314.570       324.66  275.43675  274.329286   1.107464   
2019-01-11     330.960       337.59  278.57225  276.243286   2.328964   
2019-05-22     358.010       359.73  364.37350  364.465714  -0.092214   
2019-05-23     355.500       352.21  363.56750  363.964571  -0.397071   
2019-06-27     363.200       370.02  355.41400  354.749143   0.664857   
2019-06-28     370.260       367.32  356.61600  354.879714   1.736286   
2019-07-26     328.790       335.78  355.14500  356.143143  -0.998143   
2019-07-29     335.980       332.70  353.41400  355.338286  -1.924286   
2019-10-30     284.340       291.45  278.03100  277.208857   0.822143   
2019-10-31     291.000       287.41  278.99400  277.167429   1.826571   
2020-03-17     306.180       319.75  360.35325  362.752143  -2.398893   
2020-03-18     302.395       315.47  356.81725  361.807857  -4.990607   
2020-04-14     397.500       413.55  361.34500  359.807286   1.537714   
2020-04-15     413.000       426.75  366.69500  361.711857   4.983143   
2020-06-15     421.400       425.50  427.54850  428.260286  -0.711786   
2020-06-16     425.760       436.13  426.72600  428.681714  -1.955714   
2020-06-25     458.860       465.91  436.57800  436.438571   0.139429   
2020-06-26     466.390       443.40  437.76150  436.634857   1.126643   

            trade_signal  signal_change  entry_exit  
date                                                 
2019-01-10           1.0            1.0         0.0  
2019-01-11           1.0            0.0         1.0  
2019-05-22           0.0           -1.0         0.0  
2019-05-23           0.0            0.0        -1.0  
2019-06-27           1.0            1.0         0.0  
2019-06-28           1.0            0.0         1.0  
2019-07-26           0.0           -1.0         0.0  
2019-07-29           0.0            0.0        -1.0  
2019-10-30           1.0            1.0         0.0  
2019-10-31           1.0            0.0         1.0  
2020-03-17           0.0           -1.0         0.0  
2020-03-18           0.0            0.0        -1.0  
2020-04-14           1.0            1.0         0.0  
2020-04-15           1.0            0.0         1.0  
2020-06-15           0.0           -1.0         0.0  
2020-06-16           0.0            0.0        -1.0  
2020-06-25           1.0            1.0         0.0  
2020-06-26           1.0            0.0         1.0  

List the signal change and entry/exit points for SMA_019_SlowMA_40_FastMA_05
            open_price  close_price  fast_ma     slow_ma  ma_change  \
date                                                                  
2019-01-07     302.100       315.34  283.886  275.924875   7.961125   
2019-01-08     319.980       320.27  294.408  275.744125  18.663875   
2019-04-01     359.000       366.96  358.294  358.295250  -0.001250   
2019-04-02     366.250       367.72  359.844  358.704750   1.139250   
2019-04-03     369.260       369.75  363.120  359.053250   4.066750   
2019-04-15     350.710       348.87  359.258  360.883000  -1.625000   
2019-04-16     355.000       359.46  358.208  360.821500  -2.613500   
2019-04-23     375.450       381.89  366.756  361.584250   5.171750   
2019-04-24     381.070       374.23  369.710  361.815750   7.894250   
2019-05-13     352.290       345.26  360.776  366.039250  -5.263250   
2019-05-14     348.710       345.61  355.806  365.593500  -9.787500   
2019-06-21     365.000       369.21  361.136  358.157000   2.979000   
2019-06-24     370.270       371.04  365.220  358.061750   7.158250   
2019-07-18     323.760       325.21  358.698  360.503250  -1.805250   
2019-07-19     323.400       315.10  347.068  359.387500 -12.319500   
2019-10-16     283.120       286.28  283.894  282.603250   1.290750   
2019-10-17     304.490       293.35  286.468  282.491750   3.976250   
2019-10-22     271.159       266.69  279.934  280.909000  -0.975000   
2019-10-23     268.060       271.27  276.932  280.415000  -3.483000   
2019-10-30     284.340       291.45  280.568  278.908250   1.659750   
2019-10-31     291.000       287.41  283.750  278.762250   4.987750   
2020-03-11     358.920       349.92  360.458  362.299750  -1.841750   
2020-03-12     326.500       315.25  348.952  361.713750 -12.761750   
2020-03-31     367.930       375.50  361.792  361.517375   0.274625   
2020-04-01     376.050       364.08  366.130  361.394125   4.735875   
2020-05-29     417.460       419.73  419.430  419.808250  -0.378250   
2020-06-01     418.830       425.92  418.750  421.204250  -2.454250   
2020-06-17     441.820       447.77  430.606  428.653000   1.953000   
2020-06-18     448.730       449.87  435.468  429.364250   6.103750   

            trade_signal  signal_change  entry_exit  
date                                                 
2019-01-07           1.0            1.0         0.0  
2019-01-08           1.0            0.0         1.0  
2019-04-01           0.0           -1.0         0.0  
2019-04-02           1.0            1.0        -1.0  
2019-04-03           1.0            0.0         1.0  
2019-04-15           0.0           -1.0         0.0  
2019-04-16           0.0            0.0        -1.0  
2019-04-23           1.0            1.0         0.0  
2019-04-24           1.0            0.0         1.0  
2019-05-13           0.0           -1.0         0.0  
2019-05-14           0.0            0.0        -1.0  
2019-06-21           1.0            1.0         0.0  
2019-06-24           1.0            0.0         1.0  
2019-07-18           0.0           -1.0         0.0  
2019-07-19           0.0            0.0        -1.0  
2019-10-16           1.0            1.0         0.0  
2019-10-17           1.0            0.0         1.0  
2019-10-22           0.0           -1.0         0.0  
2019-10-23           0.0            0.0        -1.0  
2019-10-30           1.0            1.0         0.0  
2019-10-31           1.0            0.0         1.0  
2020-03-11           0.0           -1.0         0.0  
2020-03-12           0.0            0.0        -1.0  
2020-03-31           1.0            1.0         0.0  
2020-04-01           1.0            0.0         1.0  
2020-05-29           0.0           -1.0         0.0  
2020-06-01           0.0            0.0        -1.0  
2020-06-17           1.0            1.0         0.0  
2020-06-18           1.0            0.0         1.0  

List the signal change and entry/exit points for SMA_020_SlowMA_40_FastMA_10
            open_price  close_price   fast_ma     slow_ma  ma_change  \
date                                                                   
2019-01-09      317.71      319.960  282.4975  275.795125   6.702375   
2019-01-10      314.57      324.660  289.5965  276.324875  13.271625   
2019-04-17      365.05      354.740  360.5270  360.692250  -0.165250   
2019-04-18      355.00      360.350  359.7740  360.776750  -1.002750   
2019-04-23      375.45      381.890  363.0070  361.584250   1.422750   
2019-04-24      381.07      374.230  363.9590  361.815750   2.143250   
2019-05-15      343.34      354.990  364.7240  365.498750  -0.774750   
2019-05-16      356.37      359.310  362.7490  365.101000  -2.352000   
2019-06-26      361.60      362.200  358.2380  357.565000   0.673000   
2019-06-27      363.20      370.020  360.8970  357.345250   3.551750   
2019-07-22      312.00      310.620  355.9640  358.347750  -2.383750   
2019-07-23      311.44      307.300  348.7010  357.170500  -8.469500   
2019-11-01      288.70      286.810  279.3070  278.678250   0.628750   
2019-11-04      288.00      292.860  280.7880  278.641250   2.146750   
2020-03-13      330.51      336.295  358.7445  361.644375  -2.899875   
2020-03-16      306.63      298.840  350.5235  360.649875 -10.126375   
2020-04-03      367.36      361.760  362.2470  361.274625   0.972375   
2020-04-06      365.22      379.960  364.2160  361.604375   2.611625   
2020-06-04      422.39      414.330  422.2930  424.944500  -2.651500   
2020-06-05      407.29      419.600  420.6280  426.156500  -5.528500   
2020-06-18      448.73      449.870  431.0520  429.364250   1.687750   
2020-06-19      449.12      453.720  434.4640  430.039750   4.424250   

            trade_signal  signal_change  entry_exit  
date                                                 
2019-01-09           1.0            1.0         0.0  
2019-01-10           1.0            0.0         1.0  
2019-04-17           0.0           -1.0         0.0  
2019-04-18           0.0            0.0        -1.0  
2019-04-23           1.0            1.0         0.0  
2019-04-24           1.0            0.0         1.0  
2019-05-15           0.0           -1.0         0.0  
2019-05-16           0.0            0.0        -1.0  
2019-06-26           1.0            1.0         0.0  
2019-06-27           1.0            0.0         1.0  
2019-07-22           0.0           -1.0         0.0  
2019-07-23           0.0            0.0        -1.0  
2019-11-01           1.0            1.0         0.0  
2019-11-04           1.0            0.0         1.0  
2020-03-13           0.0           -1.0         0.0  
2020-03-16           0.0            0.0        -1.0  
2020-04-03           1.0            1.0         0.0  
2020-04-06           1.0            0.0         1.0  
2020-06-04           0.0           -1.0         0.0  
2020-06-05           0.0            0.0        -1.0  
2020-06-18           1.0            1.0         0.0  
2020-06-19           1.0            0.0         1.0  

List the signal change and entry/exit points for SMA_021_SlowMA_40_FastMA_15
            open_price  close_price     fast_ma     slow_ma  ma_change  \
date                                                                     
2019-01-10      314.57       324.66  277.150333  276.324875   0.825458   
2019-01-11      330.96       337.59  281.871667  277.412875   4.458792   
2019-05-20      351.23       348.11  363.897333  364.193000  -0.295667   
2019-05-21      350.95       354.27  362.812667  363.894000  -1.081333   
2019-06-27      363.20       370.02  357.474000  357.345250   0.128750   
2019-06-28      370.26       367.32  357.904000  357.051750   0.852250   
2019-07-24      310.51       317.94  354.887333  356.249500  -1.362167   
2019-07-25      318.86       326.46  351.203333  355.681250  -4.477917   
2019-10-30      284.34       291.45  280.464667  278.908250   1.556417   
2019-10-31      291.00       287.41  280.926667  278.762250   2.164417   
2020-03-16      306.63       298.84  357.757000  360.649875  -2.892875   
2020-03-17      306.18       319.75  355.067667  360.151875  -5.084208   
2020-04-09      371.06       370.72  363.292000  361.338125   1.953875   
2020-04-13      371.31       396.72  367.551333  361.721125   5.830208   
2020-06-09      421.65       434.05  426.318667  428.309000  -1.990333   
2020-06-10      436.00       434.48  425.214667  428.832250  -3.617583   
2020-06-19      449.12       453.72  430.251333  430.039750   0.211583   
2020-06-22      455.01       468.04  433.059333  431.116000   1.943333   

            trade_signal  signal_change  entry_exit  
date                                                 
2019-01-10           1.0            1.0         0.0  
2019-01-11           1.0            0.0         1.0  
2019-05-20           0.0           -1.0         0.0  
2019-05-21           0.0            0.0        -1.0  
2019-06-27           1.0            1.0         0.0  
2019-06-28           1.0            0.0         1.0  
2019-07-24           0.0           -1.0         0.0  
2019-07-25           0.0            0.0        -1.0  
2019-10-30           1.0            1.0         0.0  
2019-10-31           1.0            0.0         1.0  
2020-03-16           0.0           -1.0         0.0  
2020-03-17           0.0            0.0        -1.0  
2020-04-09           1.0            1.0         0.0  
2020-04-13           1.0            0.0         1.0  
2020-06-09           0.0           -1.0         0.0  
2020-06-10           0.0            0.0        -1.0  
2020-06-19           1.0            1.0         0.0  
2020-06-22           1.0            0.0         1.0  

List the signal change and entry/exit points for SMA_022_SlowMA_40_FastMA_20
            open_price  close_price    fast_ma     slow_ma  ma_change  \
date                                                                    
2019-01-11     330.960       337.59  278.57225  277.412875   1.159375   
2019-01-14     334.240       332.94  281.41825  278.376375   3.041875   
2019-05-23     355.500       352.21  363.56750  363.859000  -0.291500   
2019-05-24     355.410       354.39  362.54450  363.853500  -1.309000   
2019-07-01     373.500       374.60  358.51450  356.791000   1.723500   
2019-07-02     374.890       375.43  359.61600  356.710000   2.906000   
2019-07-26     328.790       335.78  355.14500  355.279500  -0.134500   
2019-07-29     335.980       332.70  353.41400  355.015000  -1.601000   
2019-10-31     291.000       287.41  278.99400  278.762250   0.231750   
2019-11-01     288.700       286.81  279.69500  278.678250   1.016750   
2020-03-18     302.395       315.47  356.81725  359.585875  -2.768625   
2020-03-19     324.330       332.03  354.11875  359.736625  -5.617875   
2020-04-15     413.000       426.75  366.69500  363.524125   3.170875   
2020-04-16     437.000       439.17  372.88000  364.848625   8.031375   
2020-06-15     421.400       425.50  427.54850  428.338500  -0.790000   
2020-06-16     425.760       436.13  426.72600  428.304500  -1.578500   
2020-06-24     468.540       457.85  433.95450  433.588500   0.366000   
2020-06-25     458.860       465.91  436.57800  434.939000   1.639000   

            trade_signal  signal_change  entry_exit  
date                                                 
2019-01-11           1.0            1.0         0.0  
2019-01-14           1.0            0.0         1.0  
2019-05-23           0.0           -1.0         0.0  
2019-05-24           0.0            0.0        -1.0  
2019-07-01           1.0            1.0         0.0  
2019-07-02           1.0            0.0         1.0  
2019-07-26           0.0           -1.0         0.0  
2019-07-29           0.0            0.0        -1.0  
2019-10-31           1.0            1.0         0.0  
2019-11-01           1.0            0.0         1.0  
2020-03-18           0.0           -1.0         0.0  
2020-03-19           0.0            0.0        -1.0  
2020-04-15           1.0            1.0         0.0  
2020-04-16           1.0            0.0         1.0  
2020-06-15           0.0           -1.0         0.0  
2020-06-16           0.0            0.0        -1.0  
2020-06-24           1.0            1.0         0.0  
2020-06-25           1.0            0.0         1.0  

List the signal change and entry/exit points for SMA_023_SlowMA_45_FastMA_05
            open_price  close_price  fast_ma     slow_ma  ma_change  \
date                                                                  
2019-01-07     302.100      315.340  283.886  279.811889   4.074111   
2019-01-08     319.980      320.270  294.408  280.222778  14.185222   
2019-04-15     350.710      348.870  359.258  360.194000  -0.936000   
2019-04-16     355.000      359.460  358.208  360.499111  -2.291111   
2019-04-23     375.450      381.890  366.756  361.535556   5.220444   
2019-04-24     381.070      374.230  369.710  361.809111   7.900889   
2019-05-13     352.290      345.260  360.776  365.293111  -4.517111   
2019-05-14     348.710      345.610  355.806  364.998667  -9.192667   
2019-06-21     365.000      369.210  361.136  359.742667   1.393333   
2019-06-24     370.270      371.040  365.220  359.980222   5.239778   
2019-07-18     323.760      325.210  358.698  359.805778  -1.107778   
2019-07-19     323.400      315.100  347.068  358.919333 -11.851333   
2019-10-17     304.490      293.350  286.468  284.542444   1.925556   
2019-10-18     289.360      275.300  284.942  284.087778   0.854222   
2019-10-21     272.890      278.050  283.446  283.537778  -0.091778   
2019-10-22     271.159      266.690  279.934  282.589111  -2.655111   
2019-10-30     284.340      291.450  280.568  280.432000   0.136000   
2019-10-31     291.000      287.410  283.750  280.335111   3.414889   
2020-03-12     326.500      315.250  348.952  358.891778  -9.939778   
2020-03-13     330.510      336.295  342.417  358.825889 -16.408889   
2020-03-31     367.930      375.500  361.792  360.071222   1.720778   
2020-04-01     376.050      364.080  366.130  360.417000   5.713000   
2020-06-08     416.000      419.490  420.540  421.130444  -0.590444   
2020-06-09     421.650      434.050  421.888  422.736889  -0.848889   
2020-06-10     436.000      434.480  424.390  423.948444   0.441556   
2020-06-11     428.200      425.560  426.636  425.132444   1.503556   
2020-06-16     425.760      436.130  427.948  428.268889  -0.320889   
2020-06-17     441.820      447.770  430.606  429.029333   1.576667   
2020-06-18     448.730      449.870  435.468  429.543111   5.924889   

            trade_signal  signal_change  entry_exit  
date                                                 
2019-01-07           1.0            1.0         0.0  
2019-01-08           1.0            0.0         1.0  
2019-04-15           0.0           -1.0         0.0  
2019-04-16           0.0            0.0        -1.0  
2019-04-23           1.0            1.0         0.0  
2019-04-24           1.0            0.0         1.0  
2019-05-13           0.0           -1.0         0.0  
2019-05-14           0.0            0.0        -1.0  
2019-06-21           1.0            1.0         0.0  
2019-06-24           1.0            0.0         1.0  
2019-07-18           0.0           -1.0         0.0  
2019-07-19           0.0            0.0        -1.0  
2019-10-17           1.0            1.0         0.0  
2019-10-18           1.0            0.0         1.0  
2019-10-21           0.0           -1.0         0.0  
2019-10-22           0.0            0.0        -1.0  
2019-10-30           1.0            1.0         0.0  
2019-10-31           1.0            0.0         1.0  
2020-03-12           0.0           -1.0         0.0  
2020-03-13           0.0            0.0        -1.0  
2020-03-31           1.0            1.0         0.0  
2020-04-01           1.0            0.0         1.0  
2020-06-08           0.0           -1.0         0.0  
2020-06-09           0.0            0.0        -1.0  
2020-06-10           1.0            1.0         0.0  
2020-06-11           1.0            0.0         1.0  
2020-06-16           0.0           -1.0         0.0  
2020-06-17           1.0            1.0        -1.0  
2020-06-18           1.0            0.0         1.0  

List the signal change and entry/exit points for SMA_024_SlowMA_45_FastMA_10
            open_price  close_price   fast_ma     slow_ma  ma_change  \
date                                                                   
2019-01-09      317.71      319.960  282.4975  280.280111   2.217389   
2019-01-10      314.57      324.660  289.5965  280.625889   8.970611   
2019-04-18      355.00      360.350  359.7740  360.573556  -0.799556   
2019-04-22      359.70      377.340  360.9590  360.979556  -0.020556   
2019-04-23      375.45      381.890  363.0070  361.535556   1.471444   
2019-04-24      381.07      374.230  363.9590  361.809111   2.149889   
2019-05-15      343.34      354.990  364.7240  364.970222  -0.246222   
2019-05-16      356.37      359.310  362.7490  364.928000  -2.179000   
2019-06-27      363.20      370.020  360.8970  359.070444   1.826556   
2019-06-28      370.26      367.320  363.6560  359.048000   4.608000   
2019-07-22      312.00      310.620  355.9640  357.837333  -1.873333   
2019-07-23      311.44      307.300  348.7010  356.789556  -8.088556   
2019-11-04      288.00      292.860  280.7880  280.093778   0.694222   
2019-11-05      289.99      288.030  282.9220  280.065778   2.856222   
2020-03-13      330.51      336.295  358.7445  358.825889  -0.081389   
2020-03-16      306.63      298.840  350.5235  358.007667  -7.484167   
2020-04-03      367.36      361.760  362.2470  361.326778   0.920222   
2020-04-06      365.22      379.960  364.2160  362.101667   2.114333   
2020-06-08      416.00      419.490  419.6450  421.130444  -1.485444   
2020-06-09      421.65      434.050  421.5730  422.736889  -1.163889   
2020-06-18      448.73      449.870  431.0520  429.543111   1.508889   
2020-06-19      449.12      453.720  434.4640  429.866444   4.597556   

            trade_signal  signal_change  entry_exit  
date                                                 
2019-01-09           1.0            1.0         0.0  
2019-01-10           1.0            0.0         1.0  
2019-04-18           0.0           -1.0         0.0  
2019-04-22           0.0            0.0        -1.0  
2019-04-23           1.0            1.0         0.0  
2019-04-24           1.0            0.0         1.0  
2019-05-15           0.0           -1.0         0.0  
2019-05-16           0.0            0.0        -1.0  
2019-06-27           1.0            1.0         0.0  
2019-06-28           1.0            0.0         1.0  
2019-07-22           0.0           -1.0         0.0  
2019-07-23           0.0            0.0        -1.0  
2019-11-04           1.0            1.0         0.0  
2019-11-05           1.0            0.0         1.0  
2020-03-13           0.0           -1.0         0.0  
2020-03-16           0.0            0.0        -1.0  
2020-04-03           1.0            1.0         0.0  
2020-04-06           1.0            0.0         1.0  
2020-06-08           0.0           -1.0         0.0  
2020-06-09           0.0            0.0        -1.0  
2020-06-18           1.0            1.0         0.0  
2020-06-19           1.0            0.0         1.0  

List the signal change and entry/exit points for SMA_025_SlowMA_45_FastMA_15
            open_price  close_price     fast_ma     slow_ma  ma_change  \
date                                                                     
2019-01-11      330.96       337.59  281.871667  281.118111   0.753556   
2019-01-14      334.24       332.94  286.695667  281.609222   5.086444   
2019-05-20      351.23       348.11  363.897333  364.534222  -0.636889   
2019-05-21      350.95       354.27  362.812667  364.330444  -1.517778   
2019-07-01      373.50       374.60  359.410000  359.042444   0.367556   
2019-07-02      374.89       375.43  361.020667  359.122444   1.898222   
2019-07-24      310.51       317.94  354.887333  356.119111  -1.231778   
2019-07-25      318.86       326.46  351.203333  355.501111  -4.297778   
2019-10-30      284.34       291.45  280.464667  280.432000   0.032667   
2019-10-31      291.00       287.41  280.926667  280.335111   0.591556   
2020-03-16      306.63       298.84  357.757000  358.007667  -0.250667   
2020-03-17      306.18       319.75  355.067667  357.801000  -2.733333   
2020-04-09      371.06       370.72  363.292000  362.489222   0.802778   
2020-04-13      371.31       396.72  367.551333  363.150778   4.400556   
2020-06-11      428.20       425.56  423.740667  425.132444  -1.391778   
2020-06-12      429.00       418.07  422.528667  426.175778  -3.647111   
2020-06-19      449.12       453.72  430.251333  429.866444   0.384889   
2020-06-22      455.01       468.04  433.059333  430.868222   2.191111   

            trade_signal  signal_change  entry_exit  
date                                                 
2019-01-11           1.0            1.0         0.0  
2019-01-14           1.0            0.0         1.0  
2019-05-20           0.0           -1.0         0.0  
2019-05-21           0.0            0.0        -1.0  
2019-07-01           1.0            1.0         0.0  
2019-07-02           1.0            0.0         1.0  
2019-07-24           0.0           -1.0         0.0  
2019-07-25           0.0            0.0        -1.0  
2019-10-30           1.0            1.0         0.0  
2019-10-31           1.0            0.0         1.0  
2020-03-16           0.0           -1.0         0.0  
2020-03-17           0.0            0.0        -1.0  
2020-04-09           1.0            1.0         0.0  
2020-04-13           1.0            0.0         1.0  
2020-06-11           0.0           -1.0         0.0  
2020-06-12           0.0            0.0        -1.0  
2020-06-19           1.0            1.0         0.0  
2020-06-22           1.0            0.0         1.0  

List the signal change and entry/exit points for SMA_026_SlowMA_45_FastMA_20
            open_price  close_price    fast_ma     slow_ma  ma_change  \
date                                                                    
2019-01-15     349.600       354.64  285.80825  282.212333   3.595917   
2019-01-16     354.000       351.39  290.23775  282.956111   7.281639   
2019-05-23     355.500       352.21  363.56750  363.840222  -0.272722   
2019-05-24     355.410       354.39  362.54450  363.318444  -0.773944   
2019-07-02     374.890       375.43  359.61600  359.122444   0.493556   
2019-07-03     376.690       381.72  360.91550  359.370889   1.544611   
2019-07-29     335.980       332.70  353.41400  354.535333  -1.121333   
2019-07-30     329.200       325.93  350.98050  353.902889  -2.922389   
2019-11-04     288.000       292.86  280.61500  280.093778   0.521222   
2019-11-05     289.990       288.03  281.48050  280.065778   1.414722   
2020-03-18     302.395       315.47  356.81725  357.279889  -0.462639   
2020-03-19     324.330       332.03  354.11875  357.131889  -3.013139   
2020-04-15     413.000       426.75  366.69500  365.427667   1.267333   
2020-04-16     437.000       439.17  372.88000  366.882778   5.997222   
2020-06-16     425.760       436.13  426.72600  428.268889  -1.542889   
2020-06-17     441.820       447.77  426.56250  429.029333  -2.466833   
2020-06-23     466.500       466.26  432.05650  431.507556   0.548944   
2020-06-24     468.540       457.85  433.95450  432.041333   1.913167   

            trade_signal  signal_change  entry_exit  
date                                                 
2019-01-15           1.0            1.0         0.0  
2019-01-16           1.0            0.0         1.0  
2019-05-23           0.0           -1.0         0.0  
2019-05-24           0.0            0.0        -1.0  
2019-07-02           1.0            1.0         0.0  
2019-07-03           1.0            0.0         1.0  
2019-07-29           0.0           -1.0         0.0  
2019-07-30           0.0            0.0        -1.0  
2019-11-04           1.0            1.0         0.0  
2019-11-05           1.0            0.0         1.0  
2020-03-18           0.0           -1.0         0.0  
2020-03-19           0.0            0.0        -1.0  
2020-04-15           1.0            1.0         0.0  
2020-04-16           1.0            0.0         1.0  
2020-06-16           0.0           -1.0         0.0  
2020-06-17           0.0            0.0        -1.0  
2020-06-23           1.0            1.0         0.0  
2020-06-24           1.0            0.0         1.0  

List the signal change and entry/exit points for SMA_027_SlowMA_50_FastMA_05
            open_price  close_price  fast_ma   slow_ma  ma_change  \
date                                                                
2019-01-07      302.10      315.340  283.886  281.5343     2.3517   
2019-01-08      319.98      320.270  294.408  281.9031    12.5049   
2019-04-16      355.00      359.460  358.208  359.3694    -1.1614   
2019-04-17      365.05      354.740  356.372  359.3480    -2.9760   
2019-04-23      375.45      381.890  366.756  360.8502     5.9058   
2019-04-24      381.07      374.230  369.710  361.4202     8.2898   
2019-05-13      352.29      345.260  360.776  364.1068    -3.3308   
2019-05-14      348.71      345.610  355.806  363.9982    -8.1922   
2019-06-21      365.00      369.210  361.136  359.4056     1.7304   
2019-06-24      370.27      371.040  365.220  359.4734     5.7466   
2019-07-18      323.76      325.210  358.698  359.4058    -0.7078   
2019-07-19      323.40      315.100  347.068  358.4204   -11.3524   
2019-10-31      291.00      287.410  283.750  281.6246     2.1254   
2019-11-01      288.70      286.810  285.748  281.4222     4.3258   
2020-03-12      326.50      315.250  348.952  355.9198    -6.9678   
2020-03-13      330.51      336.295  342.417  356.1743   -13.7573   
2020-03-30      363.00      370.960  358.156  357.5425     0.6135   
2020-03-31      367.93      375.500  361.792  358.2591     3.5329   

            trade_signal  signal_change  entry_exit  
date                                                 
2019-01-07           1.0            1.0         0.0  
2019-01-08           1.0            0.0         1.0  
2019-04-16           0.0           -1.0         0.0  
2019-04-17           0.0            0.0        -1.0  
2019-04-23           1.0            1.0         0.0  
2019-04-24           1.0            0.0         1.0  
2019-05-13           0.0           -1.0         0.0  
2019-05-14           0.0            0.0        -1.0  
2019-06-21           1.0            1.0         0.0  
2019-06-24           1.0            0.0         1.0  
2019-07-18           0.0           -1.0         0.0  
2019-07-19           0.0            0.0        -1.0  
2019-10-31           1.0            1.0         0.0  
2019-11-01           1.0            0.0         1.0  
2020-03-12           0.0           -1.0         0.0  
2020-03-13           0.0            0.0        -1.0  
2020-03-30           1.0            1.0         0.0  
2020-03-31           1.0            0.0         1.0  

List the signal change and entry/exit points for SMA_028_SlowMA_50_FastMA_10
            open_price  close_price   fast_ma   slow_ma  ma_change  \
date                                                                 
2019-01-09      317.71       319.96  282.4975  282.0449     0.4526   
2019-01-10      314.57       324.66  289.5965  282.5415     7.0550   
2019-05-16      356.37       359.31  362.7490  364.0060    -1.2570   
2019-05-17      356.39       354.45  359.6910  364.0430    -4.3520   
2019-06-27      363.20       370.02  360.8970  360.1344     0.7626   
2019-06-28      370.26       367.32  363.6560  360.3860     3.2700   
2019-07-22      312.00       310.62  355.9640  357.3778    -1.4138   
2019-07-23      311.44       307.30  348.7010  356.3030    -7.6020   
2019-11-05      289.99       288.03  282.9220  281.3116     1.6104   
2019-11-06      288.19       288.59  284.6540  281.2628     3.3912   
2020-03-16      306.63       298.84  350.5235  355.5549    -5.0314   
2020-03-17      306.18       319.75  345.6215  355.4319    -9.8104   
2020-04-03      367.36       361.76  362.2470  359.9033     2.3437   
2020-04-06      365.22       379.96  364.2160  360.4393     3.7767   

            trade_signal  signal_change  entry_exit  
date                                                 
2019-01-09           1.0            1.0         0.0  
2019-01-10           1.0            0.0         1.0  
2019-05-16           0.0           -1.0         0.0  
2019-05-17           0.0            0.0        -1.0  
2019-06-27           1.0            1.0         0.0  
2019-06-28           1.0            0.0         1.0  
2019-07-22           0.0           -1.0         0.0  
2019-07-23           0.0            0.0        -1.0  
2019-11-05           1.0            1.0         0.0  
2019-11-06           1.0            0.0         1.0  
2020-03-16           0.0           -1.0         0.0  
2020-03-17           0.0            0.0        -1.0  
2020-04-03           1.0            1.0         0.0  
2020-04-06           1.0            0.0         1.0  

List the signal change and entry/exit points for SMA_029_SlowMA_50_FastMA_15
            open_price  close_price     fast_ma   slow_ma  ma_change  \
date                                                                   
2019-01-14     334.240       332.94  286.695667  284.5391   2.156567   
2019-01-15     349.600       354.64  293.912333  285.5963   8.316033   
2019-05-20     351.230       348.11  363.897333  364.0132  -0.115867   
2019-05-21     350.950       354.27  362.812667  363.9214  -1.108733   
2019-07-02     374.890       375.43  361.020667  360.6328   0.387867   
2019-07-03     376.690       381.72  363.431333  360.6294   2.801933   
2019-07-24     310.510       317.94  354.887333  355.7566  -0.869267   
2019-07-25     318.860       326.46  351.203333  355.3736  -4.170267   
2019-11-04     288.000       292.86  281.674000  281.4506   0.223400   
2019-11-05     289.990       288.03  281.926000  281.3116   0.614400   
2020-03-17     306.180       319.75  355.067667  355.4319  -0.364233   
2020-03-18     302.395       315.47  350.816333  355.0247  -4.208367   
2020-04-09     371.060       370.72  363.292000  362.0305   1.261500   
2020-04-13     371.310       396.72  367.551333  363.0101   4.541233   

            trade_signal  signal_change  entry_exit  
date                                                 
2019-01-14           1.0            1.0         0.0  
2019-01-15           1.0            0.0         1.0  
2019-05-20           0.0           -1.0         0.0  
2019-05-21           0.0            0.0        -1.0  
2019-07-02           1.0            1.0         0.0  
2019-07-03           1.0            0.0         1.0  
2019-07-24           0.0           -1.0         0.0  
2019-07-25           0.0            0.0        -1.0  
2019-11-04           1.0            1.0         0.0  
2019-11-05           1.0            0.0         1.0  
2020-03-17           0.0           -1.0         0.0  
2020-03-18           0.0            0.0        -1.0  
2020-04-09           1.0            1.0         0.0  
2020-04-13           1.0            0.0         1.0  

List the signal change and entry/exit points for SMA_030_SlowMA_50_FastMA_20
            open_price  close_price    fast_ma   slow_ma  ma_change  \
date                                                                  
2019-01-15      349.60       354.64  285.80825  285.5963    0.21195   
2019-01-16      354.00       351.39  290.23775  286.2765    3.96125   
2019-05-23      355.50       352.21  363.56750  363.8106   -0.24310   
2019-05-24      355.41       354.39  362.54450  363.7220   -1.17750   
2019-07-03      376.69       381.72  360.91550  360.6294    0.28610   
2019-07-05      378.29       380.55  362.08650  360.7558    1.33070   
2019-07-29      335.98       332.70  353.41400  354.4572   -1.04320   
2019-07-30      329.20       325.93  350.98050  353.8868   -2.90630   
2019-11-05      289.99       288.03  281.48050  281.3116    0.16890   
2019-11-06      288.19       288.59  282.53350  281.2628    1.27070   
2020-03-19      324.33       332.03  354.11875  355.0503   -0.93155   
2020-03-20      342.31       332.83  351.75675  354.9217   -3.16495   
2020-04-15      413.00       426.75  366.69500  365.7543    0.94070   
2020-04-16      437.00       439.17  372.88000  367.1575    5.72250   
2020-06-19      449.12       453.72  427.54600  427.8180   -0.27200   
2020-06-22      455.01       468.04  429.48200  429.7644   -0.28240   
2020-06-23      466.50       466.26  432.05650  431.1552    0.90130   
2020-06-24      468.54       457.85  433.95450  432.0412    1.91330   

            trade_signal  signal_change  entry_exit  
date                                                 
2019-01-15           1.0            1.0         0.0  
2019-01-16           1.0            0.0         1.0  
2019-05-23           0.0           -1.0         0.0  
2019-05-24           0.0            0.0        -1.0  
2019-07-03           1.0            1.0         0.0  
2019-07-05           1.0            0.0         1.0  
2019-07-29           0.0           -1.0         0.0  
2019-07-30           0.0            0.0        -1.0  
2019-11-05           1.0            1.0         0.0  
2019-11-06           1.0            0.0         1.0  
2020-03-19           0.0           -1.0         0.0  
2020-03-20           0.0            0.0        -1.0  
2020-04-15           1.0            1.0         0.0  
2020-04-16           1.0            0.0         1.0  
2020-06-19           0.0           -1.0         0.0  
2020-06-22           0.0            0.0        -1.0  
2020-06-23           1.0            1.0         0.0  
2020-06-24           1.0            0.0         1.0  

In [17]:
if verbose:
    for key in model_collection:
        graph_data = model_collection[key].copy()
        title_string = "Simple Moving Average Crossover Model for " + key
        fig = plt.figure(figsize=(16,9))
        ylabel = stock_symbol + ' price in $'
        ax1 = fig.add_subplot(111, ylabel=ylabel, title=title_string)
        graph_data['fast_ma'].plot(ax=ax1, color='b', lw=2.)
        graph_data['slow_ma'].plot(ax=ax1, color='r', lw=2.)
        graph_data['close_price'].plot(ax=ax1, color='g')
        ax1.plot(graph_data.loc[graph_data.entry_exit == 1].index, graph_data.close_price[graph_data.entry_exit == 1], '^', markersize=7, color='k',label='buy')
        ax1.plot(graph_data.loc[graph_data.entry_exit == -1].index, graph_data.close_price[graph_data.entry_exit == -1], 'v', markersize=7, color='k',label='sell')
        plt.legend(loc='upper left')
        plt.show()

Task 4. Back-test Model

In [18]:
def trading_portfolio_generation(initial_fund, trading_model):
    # Construct a portfolio to track the transactions and returns
    portfolio = pd.DataFrame(index=trading_model.index, columns=['trade_action', 'qty_onhand', 'cost_basis', 'sold_transaction', 'gain_loss', 'cash_onhand', 'position_value', 'total_position', 'accumu_return'])
    portfolio.iloc[0]['trade_action'] = 0
    portfolio.iloc[0]['qty_onhand'] = 0
    portfolio.iloc[0]['cost_basis'] = 0.00
    portfolio.iloc[0]['sold_transaction'] = 0.00
    portfolio.iloc[0]['gain_loss'] = 0.00
    portfolio.iloc[0]['cash_onhand'] = initial_capital
    portfolio.iloc[0]['position_value'] = 0.00
    portfolio.iloc[0]['total_position'] = initial_capital
    portfolio.iloc[0]['accumu_return'] = portfolio.iloc[0]['total_position'] - initial_fund
    recent_cost = 0

    # The conditional parameters below determine how the trading strategy will be carried out
    for i in range(1, len(portfolio)):
        if (trading_model.iloc[i]['entry_exit'] == 1) and (portfolio.iloc[i-1]['qty_onhand'] == 0):
            portfolio.iloc[i]['trade_action'] = 1
            portfolio.iloc[i]['qty_onhand'] = portfolio.iloc[i-1]['qty_onhand'] + portfolio.iloc[i]['trade_action']
            portfolio.iloc[i]['cost_basis'] = trading_model.iloc[i]['open_price'] * portfolio.iloc[i]['trade_action']
            portfolio.iloc[i]['sold_transaction'] = 0.00
            portfolio.iloc[i]['gain_loss'] = 0.00
            portfolio.iloc[i]['cash_onhand'] = portfolio.iloc[i-1]['cash_onhand'] - portfolio.iloc[i]['cost_basis']
            recent_cost = trading_model.iloc[i]['open_price'] * portfolio.iloc[i]['trade_action']
            if verbose: print('BOUGHT QTY:', portfolio.iloc[i]['trade_action'], 'on', portfolio.index[i], 'at the price of', trading_model.iloc[i]['open_price'])
        elif (trading_model.iloc[i]['entry_exit'] == -1) and (portfolio.iloc[i-1]['qty_onhand'] > 0):
            portfolio.iloc[i]['trade_action'] = -1
            portfolio.iloc[i]['qty_onhand'] = portfolio.iloc[i-1]['qty_onhand'] + portfolio.iloc[i]['trade_action']
            portfolio.iloc[i]['cost_basis'] = 0.00
            portfolio.iloc[i]['sold_transaction'] = trading_model.iloc[i]['open_price'] * portfolio.iloc[i]['trade_action'] * -1
            portfolio.iloc[i]['gain_loss'] = (recent_cost + (trading_model.iloc[i]['open_price'] * portfolio.iloc[i]['trade_action'])) * -1
            portfolio.iloc[i]['cash_onhand'] = portfolio.iloc[i-1]['cash_onhand'] + portfolio.iloc[i]['sold_transaction']
            recent_cost = 0.00
            if verbose: print('SOLD QTY:', portfolio.iloc[i]['trade_action'], 'on', portfolio.index[i], 'at the price of', trading_model.iloc[i]['open_price'])
        else:
            portfolio.iloc[i]['trade_action'] = 0
            portfolio.iloc[i]['qty_onhand'] = portfolio.iloc[i-1]['qty_onhand']
            portfolio.iloc[i]['cost_basis'] = portfolio.iloc[i-1]['cost_basis']
            portfolio.iloc[i]['sold_transaction'] = 0.00
            portfolio.iloc[i]['gain_loss'] = 0.00
            portfolio.iloc[i]['cash_onhand'] = portfolio.iloc[i-1]['cash_onhand']
        portfolio.iloc[i]['position_value'] = trading_model.iloc[i]['close_price'] * portfolio.iloc[i]['qty_onhand']
        portfolio.iloc[i]['total_position'] = portfolio.iloc[i]['cash_onhand'] + portfolio.iloc[i]['position_value']
        portfolio.iloc[i]['accumu_return'] = portfolio.iloc[i]['total_position'] - initial_fund

    return portfolio
In [19]:
portfolio_collection = {}

# Build dataframe for reporting model performance summary
performance_summary = pd.DataFrame(columns=['model_name','return_value','return_percent'])

for key in model_collection:
    print('Processing portfolio for model:', key)
    portfolio_collection[key] = trading_portfolio_generation(initial_capital, model_collection[key])
    trade_transactions = portfolio_collection[key][portfolio_collection[key].trade_action != 0]
    print(trade_transactions)
    print('Accumulated profit/loss for one share of stock with initial capital of $%.0f at the end of modeling period: $%.2f' % (initial_capital, portfolio_collection[key].accumu_return[-1]))
    if initial_capital != 0:
        return_percentage = portfolio_collection[key].accumu_return[-1] / initial_capital * 100
        print('Accumulated return percentage based on the initial capital investment: %.2f%%' % (return_percentage))
    else:
        return_percentage = None
    if trade_transactions.iloc[-1]['trade_action'] == 1:
        print('The current status of the model is:', 'Holding a position since', trade_transactions.index.tolist()[-1], '\n')
    else:
        print('The current status of the model is:', 'Waiting to enter since', trade_transactions.index.tolist()[-1], '\n')
    performance_summary = performance_summary.append({'model_name': key, 'return_value': portfolio_collection[key].accumu_return[-1],
                                                      'return_percent': return_percentage}, ignore_index=True)
Processing portfolio for model: SMA_001_SlowMA_10_FastMA_05
BOUGHT QTY: 1 on 2019-02-01 00:00:00 at the price of 337.18
SOLD QTY: -1 on 2019-03-05 00:00:00 at the price of 351.46
BOUGHT QTY: 1 on 2019-03-15 00:00:00 at the price of 361.02
SOLD QTY: -1 on 2019-03-29 00:00:00 at the price of 357.16
BOUGHT QTY: 1 on 2019-04-05 00:00:00 at the price of 369.0
SOLD QTY: -1 on 2019-04-12 00:00:00 at the price of 360.69
BOUGHT QTY: 1 on 2019-04-24 00:00:00 at the price of 381.07
SOLD QTY: -1 on 2019-05-10 00:00:00 at the price of 361.62
BOUGHT QTY: 1 on 2019-05-23 00:00:00 at the price of 355.5
SOLD QTY: -1 on 2019-05-30 00:00:00 at the price of 350.55
BOUGHT QTY: 1 on 2019-06-10 00:00:00 at the price of 363.65
SOLD QTY: -1 on 2019-06-17 00:00:00 at the price of 342.69
BOUGHT QTY: 1 on 2019-06-21 00:00:00 at the price of 365.0
SOLD QTY: -1 on 2019-07-16 00:00:00 at the price of 370.09
BOUGHT QTY: 1 on 2019-07-31 00:00:00 at the price of 325.16
SOLD QTY: -1 on 2019-08-06 00:00:00 at the price of 310.58
BOUGHT QTY: 1 on 2019-09-18 00:00:00 at the price of 294.99
SOLD QTY: -1 on 2019-09-23 00:00:00 at the price of 268.345
BOUGHT QTY: 1 on 2019-10-04 00:00:00 at the price of 268.2
SOLD QTY: -1 on 2019-10-23 00:00:00 at the price of 268.06
BOUGHT QTY: 1 on 2019-10-31 00:00:00 at the price of 291.0
SOLD QTY: -1 on 2019-12-05 00:00:00 at the price of 305.27
BOUGHT QTY: 1 on 2019-12-18 00:00:00 at the price of 316.26
SOLD QTY: -1 on 2020-01-03 00:00:00 at the price of 326.78
BOUGHT QTY: 1 on 2020-01-09 00:00:00 at the price of 342.0
SOLD QTY: -1 on 2020-01-23 00:00:00 at the price of 326.04
BOUGHT QTY: 1 on 2020-01-24 00:00:00 at the price of 348.46
SOLD QTY: -1 on 2020-02-26 00:00:00 at the price of 366.31
BOUGHT QTY: 1 on 2020-03-05 00:00:00 at the price of 381.0
SOLD QTY: -1 on 2020-03-10 00:00:00 at the price of 356.425
BOUGHT QTY: 1 on 2020-03-25 00:00:00 at the price of 361.02
SOLD QTY: -1 on 2020-04-28 00:00:00 at the price of 419.99
BOUGHT QTY: 1 on 2020-05-06 00:00:00 at the price of 429.3
SOLD QTY: -1 on 2020-05-27 00:00:00 at the price of 410.38
BOUGHT QTY: 1 on 2020-06-08 00:00:00 at the price of 416.0
           trade_action qty_onhand cost_basis sold_transaction gain_loss  \
date                                                                       
2019-02-01            1          1     337.18                0         0   
2019-03-05           -1          0          0           351.46     14.28   
2019-03-15            1          1     361.02                0         0   
2019-03-29           -1          0          0           357.16     -3.86   
2019-04-05            1          1        369                0         0   
2019-04-12           -1          0          0           360.69     -8.31   
2019-04-24            1          1     381.07                0         0   
2019-05-10           -1          0          0           361.62    -19.45   
2019-05-23            1          1      355.5                0         0   
2019-05-30           -1          0          0           350.55     -4.95   
2019-06-10            1          1     363.65                0         0   
2019-06-17           -1          0          0           342.69    -20.96   
2019-06-21            1          1        365                0         0   
2019-07-16           -1          0          0           370.09      5.09   
2019-07-31            1          1     325.16                0         0   
2019-08-06           -1          0          0           310.58    -14.58   
2019-09-18            1          1     294.99                0         0   
2019-09-23           -1          0          0          268.345   -26.645   
2019-10-04            1          1      268.2                0         0   
2019-10-23           -1          0          0           268.06     -0.14   
2019-10-31            1          1        291                0         0   
2019-12-05           -1          0          0           305.27     14.27   
2019-12-18            1          1     316.26                0         0   
2020-01-03           -1          0          0           326.78     10.52   
2020-01-09            1          1        342                0         0   
2020-01-23           -1          0          0           326.04    -15.96   
2020-01-24            1          1     348.46                0         0   
2020-02-26           -1          0          0           366.31     17.85   
2020-03-05            1          1        381                0         0   
2020-03-10           -1          0          0          356.425   -24.575   
2020-03-25            1          1     361.02                0         0   
2020-04-28           -1          0          0           419.99     58.97   
2020-05-06            1          1      429.3                0         0   
2020-05-27           -1          0          0           410.38    -18.92   
2020-06-08            1          1        416                0         0   

           cash_onhand position_value total_position accumu_return  
date                                                                
2019-02-01     -337.18         339.85           2.67          2.67  
2019-03-05       14.28              0          14.28         14.28  
2019-03-15     -346.74         361.46          14.72         14.72  
2019-03-29       10.42              0          10.42         10.42  
2019-04-05     -358.58         365.49           6.91          6.91  
2019-04-12        2.11              0           2.11          2.11  
2019-04-24     -378.96         374.23          -4.73         -4.73  
2019-05-10      -17.34              0         -17.34        -17.34  
2019-05-23     -372.84         352.21         -20.63        -20.63  
2019-05-30      -22.29              0         -22.29        -22.29  
2019-06-10     -385.94         352.01         -33.93        -33.93  
2019-06-17      -43.25              0         -43.25        -43.25  
2019-06-21     -408.25         369.21         -39.04        -39.04  
2019-07-16      -38.16              0         -38.16        -38.16  
2019-07-31     -363.32         322.99         -40.33        -40.33  
2019-08-06      -52.74              0         -52.74        -52.74  
2019-09-18     -347.73         291.56         -56.17        -56.17  
2019-09-23     -79.385              0        -79.385       -79.385  
2019-10-04    -347.585         272.79        -74.795       -74.795  
2019-10-23     -79.525              0        -79.525       -79.525  
2019-10-31    -370.525         287.41        -83.115       -83.115  
2019-12-05     -65.255              0        -65.255       -65.255  
2019-12-18    -381.515          320.8        -60.715       -60.715  
2020-01-03     -54.735              0        -54.735       -54.735  
2020-01-09    -396.735         335.66        -61.075       -61.075  
2020-01-23     -70.695              0        -70.695       -70.695  
2020-01-24    -419.155         353.16        -65.995       -65.995  
2020-02-26     -52.845              0        -52.845       -52.845  
2020-03-05    -433.845         372.78        -61.065       -61.065  
2020-03-10      -77.42              0         -77.42        -77.42  
2020-03-25     -438.44         342.39         -96.05        -96.05  
2020-04-28      -18.45              0         -18.45        -18.45  
2020-05-06     -447.75         434.26         -13.49        -13.49  
2020-05-27      -37.37              0         -37.37        -37.37  
2020-06-08     -453.37         419.49         -33.88        -33.88  
Accumulated profit/loss for one share of stock with initial capital of $0 at the end of modeling period: $1.67
The current status of the model is: Holding a position since 2020-06-08 00:00:00 

Processing portfolio for model: SMA_002_SlowMA_15_FastMA_05
BOUGHT QTY: 1 on 2019-01-04 00:00:00 at the price of 281.88
SOLD QTY: -1 on 2019-01-28 00:00:00 at the price of 334.7
BOUGHT QTY: 1 on 2019-02-05 00:00:00 at the price of 353.2
SOLD QTY: -1 on 2019-03-06 00:00:00 at the price of 353.6
BOUGHT QTY: 1 on 2019-03-18 00:00:00 at the price of 362.47
SOLD QTY: -1 on 2019-03-29 00:00:00 at the price of 357.16
BOUGHT QTY: 1 on 2019-04-05 00:00:00 at the price of 369.0
SOLD QTY: -1 on 2019-04-15 00:00:00 at the price of 350.71
BOUGHT QTY: 1 on 2019-04-24 00:00:00 at the price of 381.07
SOLD QTY: -1 on 2019-05-10 00:00:00 at the price of 361.62
BOUGHT QTY: 1 on 2019-06-10 00:00:00 at the price of 363.65
SOLD QTY: -1 on 2019-06-14 00:00:00 at the price of 341.63
BOUGHT QTY: 1 on 2019-06-20 00:00:00 at the price of 365.91
SOLD QTY: -1 on 2019-07-18 00:00:00 at the price of 323.76
BOUGHT QTY: 1 on 2019-09-18 00:00:00 at the price of 294.99
SOLD QTY: -1 on 2019-09-23 00:00:00 at the price of 268.345
BOUGHT QTY: 1 on 2019-10-09 00:00:00 at the price of 270.02
SOLD QTY: -1 on 2019-10-24 00:00:00 at the price of 271.81
BOUGHT QTY: 1 on 2019-10-31 00:00:00 at the price of 291.0
SOLD QTY: -1 on 2019-12-09 00:00:00 at the price of 307.35
BOUGHT QTY: 1 on 2019-12-19 00:00:00 at the price of 324.5
SOLD QTY: -1 on 2020-02-27 00:00:00 at the price of 371.46
BOUGHT QTY: 1 on 2020-03-26 00:00:00 at the price of 344.0
SOLD QTY: -1 on 2020-05-01 00:00:00 at the price of 415.1
BOUGHT QTY: 1 on 2020-05-07 00:00:00 at the price of 436.89
SOLD QTY: -1 on 2020-05-27 00:00:00 at the price of 410.38
BOUGHT QTY: 1 on 2020-06-12 00:00:00 at the price of 429.0
           trade_action qty_onhand cost_basis sold_transaction gain_loss  \
date                                                                       
2019-01-04            1          1     281.88                0         0   
2019-01-28           -1          0          0            334.7     52.82   
2019-02-05            1          1      353.2                0         0   
2019-03-06           -1          0          0            353.6       0.4   
2019-03-18            1          1     362.47                0         0   
2019-03-29           -1          0          0           357.16     -5.31   
2019-04-05            1          1        369                0         0   
2019-04-15           -1          0          0           350.71    -18.29   
2019-04-24            1          1     381.07                0         0   
2019-05-10           -1          0          0           361.62    -19.45   
2019-06-10            1          1     363.65                0         0   
2019-06-14           -1          0          0           341.63    -22.02   
2019-06-20            1          1     365.91                0         0   
2019-07-18           -1          0          0           323.76    -42.15   
2019-09-18            1          1     294.99                0         0   
2019-09-23           -1          0          0          268.345   -26.645   
2019-10-09            1          1     270.02                0         0   
2019-10-24           -1          0          0           271.81      1.79   
2019-10-31            1          1        291                0         0   
2019-12-09           -1          0          0           307.35     16.35   
2019-12-19            1          1      324.5                0         0   
2020-02-27           -1          0          0           371.46     46.96   
2020-03-26            1          1        344                0         0   
2020-05-01           -1          0          0            415.1      71.1   
2020-05-07            1          1     436.89                0         0   
2020-05-27           -1          0          0           410.38    -26.51   
2020-06-12            1          1        429                0         0   

           cash_onhand position_value total_position accumu_return  
date                                                                
2019-01-04     -281.88         297.57          15.69         15.69  
2019-01-28       52.82              0          52.82         52.82  
2019-02-05     -300.38         355.81          55.43         55.43  
2019-03-06       53.22              0          53.22         53.22  
2019-03-18     -309.25         363.44          54.19         54.19  
2019-03-29       47.91              0          47.91         47.91  
2019-04-05     -321.09         365.49           44.4          44.4  
2019-04-15       29.62              0          29.62         29.62  
2019-04-24     -351.45         374.23          22.78         22.78  
2019-05-10       10.17              0          10.17         10.17  
2019-06-10     -353.48         352.01          -1.47         -1.47  
2019-06-14      -11.85              0         -11.85        -11.85  
2019-06-20     -377.76         365.21         -12.55        -12.55  
2019-07-18         -54              0            -54           -54  
2019-09-18     -348.99         291.56         -57.43        -57.43  
2019-09-23     -80.645              0        -80.645       -80.645  
2019-10-09    -350.665         267.53        -83.135       -83.135  
2019-10-24     -78.855              0        -78.855       -78.855  
2019-10-31    -369.855         287.41        -82.445       -82.445  
2019-12-09     -62.505              0        -62.505       -62.505  
2019-12-19    -387.005         332.22        -54.785       -54.785  
2020-02-27     -15.545              0        -15.545       -15.545  
2020-03-26    -359.545         362.99          3.445         3.445  
2020-05-01      55.555              0         55.555        55.555  
2020-05-07    -381.335         436.53         55.195        55.195  
2020-05-27      29.045              0         29.045        29.045  
2020-06-12    -399.955         418.07         18.115        18.115  
Accumulated profit/loss for one share of stock with initial capital of $0 at the end of modeling period: $55.09
The current status of the model is: Holding a position since 2020-06-12 00:00:00 

Processing portfolio for model: SMA_003_SlowMA_15_FastMA_10
BOUGHT QTY: 1 on 2019-01-08 00:00:00 at the price of 319.98
SOLD QTY: -1 on 2019-02-01 00:00:00 at the price of 337.18
BOUGHT QTY: 1 on 2019-02-07 00:00:00 at the price of 347.9
SOLD QTY: -1 on 2019-03-08 00:00:00 at the price of 345.75
BOUGHT QTY: 1 on 2019-03-20 00:00:00 at the price of 358.91
SOLD QTY: -1 on 2019-04-04 00:00:00 at the price of 370.07
BOUGHT QTY: 1 on 2019-04-11 00:00:00 at the price of 365.0
SOLD QTY: -1 on 2019-04-18 00:00:00 at the price of 355.0
BOUGHT QTY: 1 on 2019-04-29 00:00:00 at the price of 373.68
SOLD QTY: -1 on 2019-05-13 00:00:00 at the price of 352.29
BOUGHT QTY: 1 on 2019-06-18 00:00:00 at the price of 355.57
SOLD QTY: -1 on 2019-06-25 00:00:00 at the price of 370.75
BOUGHT QTY: 1 on 2019-06-26 00:00:00 at the price of 361.6
SOLD QTY: -1 on 2019-07-19 00:00:00 at the price of 323.4
BOUGHT QTY: 1 on 2019-08-08 00:00:00 at the price of 311.03
SOLD QTY: -1 on 2019-08-12 00:00:00 at the price of 305.46
BOUGHT QTY: 1 on 2019-10-10 00:00:00 at the price of 265.97
SOLD QTY: -1 on 2019-10-30 00:00:00 at the price of 284.34
BOUGHT QTY: 1 on 2019-11-06 00:00:00 at the price of 288.19
SOLD QTY: -1 on 2019-12-11 00:00:00 at the price of 294.49
BOUGHT QTY: 1 on 2019-12-23 00:00:00 at the price of 337.76
SOLD QTY: -1 on 2020-01-10 00:00:00 at the price of 337.13
BOUGHT QTY: 1 on 2020-01-15 00:00:00 at the price of 338.68
SOLD QTY: -1 on 2020-03-03 00:00:00 at the price of 381.03
BOUGHT QTY: 1 on 2020-03-31 00:00:00 at the price of 367.93
SOLD QTY: -1 on 2020-05-05 00:00:00 at the price of 427.555
BOUGHT QTY: 1 on 2020-05-13 00:00:00 at the price of 435.69
SOLD QTY: -1 on 2020-05-29 00:00:00 at the price of 417.46
BOUGHT QTY: 1 on 2020-06-12 00:00:00 at the price of 429.0
           trade_action qty_onhand cost_basis sold_transaction gain_loss  \
date                                                                       
2019-01-08            1          1     319.98                0         0   
2019-02-01           -1          0          0           337.18      17.2   
2019-02-07            1          1      347.9                0         0   
2019-03-08           -1          0          0           345.75     -2.15   
2019-03-20            1          1     358.91                0         0   
2019-04-04           -1          0          0           370.07     11.16   
2019-04-11            1          1        365                0         0   
2019-04-18           -1          0          0              355       -10   
2019-04-29            1          1     373.68                0         0   
2019-05-13           -1          0          0           352.29    -21.39   
2019-06-18            1          1     355.57                0         0   
2019-06-25           -1          0          0           370.75     15.18   
2019-06-26            1          1      361.6                0         0   
2019-07-19           -1          0          0            323.4     -38.2   
2019-08-08            1          1     311.03                0         0   
2019-08-12           -1          0          0           305.46     -5.57   
2019-10-10            1          1     265.97                0         0   
2019-10-30           -1          0          0           284.34     18.37   
2019-11-06            1          1     288.19                0         0   
2019-12-11           -1          0          0           294.49       6.3   
2019-12-23            1          1     337.76                0         0   
2020-01-10           -1          0          0           337.13     -0.63   
2020-01-15            1          1     338.68                0         0   
2020-03-03           -1          0          0           381.03     42.35   
2020-03-31            1          1     367.93                0         0   
2020-05-05           -1          0          0          427.555    59.625   
2020-05-13            1          1     435.69                0         0   
2020-05-29           -1          0          0           417.46    -18.23   
2020-06-12            1          1        429                0         0   

           cash_onhand position_value total_position accumu_return  
date                                                                
2019-01-08     -319.98         320.27           0.29          0.29  
2019-02-01        17.2              0           17.2          17.2  
2019-02-07      -330.7         344.71          14.01         14.01  
2019-03-08       15.05              0          15.05         15.05  
2019-03-20     -343.86         375.22          31.36         31.36  
2019-04-04       26.21              0          26.21         26.21  
2019-04-11     -338.79         367.65          28.86         28.86  
2019-04-18       16.21              0          16.21         16.21  
2019-04-29     -357.47         371.83          14.36         14.36  
2019-05-13       -5.18              0          -5.18         -5.18  
2019-06-18     -360.75         357.12          -3.63         -3.63  
2019-06-25          10              0             10            10  
2019-06-26      -351.6          362.2           10.6          10.6  
2019-07-19       -28.2              0          -28.2         -28.2  
2019-08-08     -339.23          315.9         -23.33        -23.33  
2019-08-12      -33.77              0         -33.77        -33.77  
2019-10-10     -299.74         280.48         -19.26        -19.26  
2019-10-30       -15.4              0          -15.4         -15.4  
2019-11-06     -303.59         288.59            -15           -15  
2019-12-11        -9.1              0           -9.1          -9.1  
2019-12-23     -346.86          333.1         -13.76        -13.76  
2020-01-10       -9.73              0          -9.73         -9.73  
2020-01-15     -348.41         339.07          -9.34         -9.34  
2020-03-03       32.62              0          32.62         32.62  
2020-03-31     -335.31          375.5          40.19         40.19  
2020-05-05      92.245              0         92.245        92.245  
2020-05-13    -343.445         438.27         94.825        94.825  
2020-05-29      74.015              0         74.015        74.015  
2020-06-12    -354.985         418.07         63.085        63.085  
Accumulated profit/loss for one share of stock with initial capital of $0 at the end of modeling period: $100.05
The current status of the model is: Holding a position since 2020-06-12 00:00:00 

Processing portfolio for model: SMA_004_SlowMA_20_FastMA_05
BOUGHT QTY: 1 on 2019-01-07 00:00:00 at the price of 302.1
SOLD QTY: -1 on 2019-03-07 00:00:00 at the price of 360.16
BOUGHT QTY: 1 on 2019-03-18 00:00:00 at the price of 362.47
SOLD QTY: -1 on 2019-03-29 00:00:00 at the price of 357.16
BOUGHT QTY: 1 on 2019-04-04 00:00:00 at the price of 370.07
SOLD QTY: -1 on 2019-04-15 00:00:00 at the price of 350.71
BOUGHT QTY: 1 on 2019-04-24 00:00:00 at the price of 381.07
SOLD QTY: -1 on 2019-05-13 00:00:00 at the price of 352.29
BOUGHT QTY: 1 on 2019-06-10 00:00:00 at the price of 363.65
SOLD QTY: -1 on 2019-06-14 00:00:00 at the price of 341.63
BOUGHT QTY: 1 on 2019-06-21 00:00:00 at the price of 365.0
SOLD QTY: -1 on 2019-07-18 00:00:00 at the price of 323.76
BOUGHT QTY: 1 on 2019-09-19 00:00:00 at the price of 291.56
SOLD QTY: -1 on 2019-09-23 00:00:00 at the price of 268.345
BOUGHT QTY: 1 on 2019-10-14 00:00:00 at the price of 283.93
SOLD QTY: -1 on 2019-10-25 00:00:00 at the price of 270.68
BOUGHT QTY: 1 on 2019-10-31 00:00:00 at the price of 291.0
SOLD QTY: -1 on 2019-12-11 00:00:00 at the price of 294.49
BOUGHT QTY: 1 on 2019-12-19 00:00:00 at the price of 324.5
SOLD QTY: -1 on 2020-03-02 00:00:00 at the price of 373.11
BOUGHT QTY: 1 on 2020-03-27 00:00:00 at the price of 359.09
SOLD QTY: -1 on 2020-05-28 00:00:00 at the price of 417.24
BOUGHT QTY: 1 on 2020-06-17 00:00:00 at the price of 441.82
           trade_action qty_onhand cost_basis sold_transaction gain_loss  \
date                                                                       
2019-01-07            1          1      302.1                0         0   
2019-03-07           -1          0          0           360.16     58.06   
2019-03-18            1          1     362.47                0         0   
2019-03-29           -1          0          0           357.16     -5.31   
2019-04-04            1          1     370.07                0         0   
2019-04-15           -1          0          0           350.71    -19.36   
2019-04-24            1          1     381.07                0         0   
2019-05-13           -1          0          0           352.29    -28.78   
2019-06-10            1          1     363.65                0         0   
2019-06-14           -1          0          0           341.63    -22.02   
2019-06-21            1          1        365                0         0   
2019-07-18           -1          0          0           323.76    -41.24   
2019-09-19            1          1     291.56                0         0   
2019-09-23           -1          0          0          268.345   -23.215   
2019-10-14            1          1     283.93                0         0   
2019-10-25           -1          0          0           270.68    -13.25   
2019-10-31            1          1        291                0         0   
2019-12-11           -1          0          0           294.49      3.49   
2019-12-19            1          1      324.5                0         0   
2020-03-02           -1          0          0           373.11     48.61   
2020-03-27            1          1     359.09                0         0   
2020-05-28           -1          0          0           417.24     58.15   
2020-06-17            1          1     441.82                0         0   

           cash_onhand position_value total_position accumu_return  
date                                                                
2019-01-07      -302.1         315.34          13.24         13.24  
2019-03-07       58.06              0          58.06         58.06  
2019-03-18     -304.41         363.44          59.03         59.03  
2019-03-29       52.75              0          52.75         52.75  
2019-04-04     -317.32         367.88          50.56         50.56  
2019-04-15       33.39              0          33.39         33.39  
2019-04-24     -347.68         374.23          26.55         26.55  
2019-05-13        4.61              0           4.61          4.61  
2019-06-10     -359.04         352.01          -7.03         -7.03  
2019-06-14      -17.41              0         -17.41        -17.41  
2019-06-21     -382.41         369.21          -13.2         -13.2  
2019-07-18      -58.65              0         -58.65        -58.65  
2019-09-19     -350.21          286.6         -63.61        -63.61  
2019-09-23     -81.865              0        -81.865       -81.865  
2019-10-14    -365.795         285.53        -80.265       -80.265  
2019-10-25     -95.115              0        -95.115       -95.115  
2019-10-31    -386.115         287.41        -98.705       -98.705  
2019-12-11     -91.625              0        -91.625       -91.625  
2019-12-19    -416.125         332.22        -83.905       -83.905  
2020-03-02     -43.015              0        -43.015       -43.015  
2020-03-27    -402.105         357.12        -44.985       -44.985  
2020-05-28      15.135              0         15.135        15.135  
2020-06-17    -426.685         447.77         21.085        21.085  
Accumulated profit/loss for one share of stock with initial capital of $0 at the end of modeling period: $28.36
The current status of the model is: Holding a position since 2020-06-17 00:00:00 

Processing portfolio for model: SMA_005_SlowMA_20_FastMA_10
BOUGHT QTY: 1 on 2019-01-09 00:00:00 at the price of 317.71
SOLD QTY: -1 on 2019-02-05 00:00:00 at the price of 353.2
BOUGHT QTY: 1 on 2019-02-06 00:00:00 at the price of 357.0
SOLD QTY: -1 on 2019-03-12 00:00:00 at the price of 359.37
BOUGHT QTY: 1 on 2019-03-21 00:00:00 at the price of 374.0
SOLD QTY: -1 on 2019-04-08 00:00:00 at the price of 365.11
BOUGHT QTY: 1 on 2019-04-11 00:00:00 at the price of 365.0
SOLD QTY: -1 on 2019-04-16 00:00:00 at the price of 355.0
BOUGHT QTY: 1 on 2019-04-24 00:00:00 at the price of 381.07
SOLD QTY: -1 on 2019-04-29 00:00:00 at the price of 373.68
BOUGHT QTY: 1 on 2019-04-30 00:00:00 at the price of 369.56
SOLD QTY: -1 on 2019-05-15 00:00:00 at the price of 343.34
BOUGHT QTY: 1 on 2019-06-18 00:00:00 at the price of 355.57
SOLD QTY: -1 on 2019-07-19 00:00:00 at the price of 323.4
BOUGHT QTY: 1 on 2019-10-15 00:00:00 at the price of 283.82
SOLD QTY: -1 on 2019-11-01 00:00:00 at the price of 288.7
BOUGHT QTY: 1 on 2019-11-05 00:00:00 at the price of 289.99
SOLD QTY: -1 on 2019-12-13 00:00:00 at the price of 298.5
BOUGHT QTY: 1 on 2019-12-23 00:00:00 at the price of 337.76
SOLD QTY: -1 on 2020-03-05 00:00:00 at the price of 381.0
BOUGHT QTY: 1 on 2020-04-01 00:00:00 at the price of 376.05
SOLD QTY: -1 on 2020-05-11 00:00:00 at the price of 436.33
BOUGHT QTY: 1 on 2020-05-13 00:00:00 at the price of 435.69
SOLD QTY: -1 on 2020-06-02 00:00:00 at the price of 425.87
BOUGHT QTY: 1 on 2020-06-18 00:00:00 at the price of 448.73
           trade_action qty_onhand cost_basis sold_transaction gain_loss  \
date                                                                       
2019-01-09            1          1     317.71                0         0   
2019-02-05           -1          0          0            353.2     35.49   
2019-02-06            1          1        357                0         0   
2019-03-12           -1          0          0           359.37      2.37   
2019-03-21            1          1        374                0         0   
2019-04-08           -1          0          0           365.11     -8.89   
2019-04-11            1          1        365                0         0   
2019-04-16           -1          0          0              355       -10   
2019-04-24            1          1     381.07                0         0   
2019-04-29           -1          0          0           373.68     -7.39   
2019-04-30            1          1     369.56                0         0   
2019-05-15           -1          0          0           343.34    -26.22   
2019-06-18            1          1     355.57                0         0   
2019-07-19           -1          0          0            323.4    -32.17   
2019-10-15            1          1     283.82                0         0   
2019-11-01           -1          0          0            288.7      4.88   
2019-11-05            1          1     289.99                0         0   
2019-12-13           -1          0          0            298.5      8.51   
2019-12-23            1          1     337.76                0         0   
2020-03-05           -1          0          0              381     43.24   
2020-04-01            1          1     376.05                0         0   
2020-05-11           -1          0          0           436.33     60.28   
2020-05-13            1          1     435.69                0         0   
2020-06-02           -1          0          0           425.87     -9.82   
2020-06-18            1          1     448.73                0         0   

           cash_onhand position_value total_position accumu_return  
date                                                                
2019-01-09     -317.71         319.96           2.25          2.25  
2019-02-05       35.49              0          35.49         35.49  
2019-02-06     -321.51         352.19          30.68         30.68  
2019-03-12       37.86              0          37.86         37.86  
2019-03-21     -336.14         377.87          41.73         41.73  
2019-04-08       28.97              0          28.97         28.97  
2019-04-11     -336.03         367.65          31.62         31.62  
2019-04-16       18.97              0          18.97         18.97  
2019-04-24      -362.1         374.23          12.13         12.13  
2019-04-29       11.58              0          11.58         11.58  
2019-04-30     -357.98         370.54          12.56         12.56  
2019-05-15      -14.64              0         -14.64        -14.64  
2019-06-18     -370.21         357.12         -13.09        -13.09  
2019-07-19      -46.81              0         -46.81        -46.81  
2019-10-15     -330.63         284.25         -46.38        -46.38  
2019-11-01      -41.93              0         -41.93        -41.93  
2019-11-05     -331.92         288.03         -43.89        -43.89  
2019-12-13      -33.42              0         -33.42        -33.42  
2019-12-23     -371.18          333.1         -38.08        -38.08  
2020-03-05        9.82              0           9.82          9.82  
2020-04-01     -366.23         364.08          -2.15         -2.15  
2020-05-11        70.1              0           70.1          70.1  
2020-05-13     -365.59         438.27          72.68         72.68  
2020-06-02       60.28              0          60.28         60.28  
2020-06-18     -388.45         449.87          61.42         61.42  
Accumulated profit/loss for one share of stock with initial capital of $0 at the end of modeling period: $66.59
The current status of the model is: Holding a position since 2020-06-18 00:00:00 

Processing portfolio for model: SMA_006_SlowMA_20_FastMA_15
BOUGHT QTY: 1 on 2019-01-10 00:00:00 at the price of 314.57
SOLD QTY: -1 on 2019-02-08 00:00:00 at the price of 338.0
BOUGHT QTY: 1 on 2019-02-14 00:00:00 at the price of 351.75
SOLD QTY: -1 on 2019-03-15 00:00:00 at the price of 361.02
BOUGHT QTY: 1 on 2019-03-26 00:00:00 at the price of 367.87
SOLD QTY: -1 on 2019-04-12 00:00:00 at the price of 360.69
BOUGHT QTY: 1 on 2019-04-22 00:00:00 at the price of 359.7
SOLD QTY: -1 on 2019-04-29 00:00:00 at the price of 373.68
BOUGHT QTY: 1 on 2019-05-02 00:00:00 at the price of 378.0
SOLD QTY: -1 on 2019-05-16 00:00:00 at the price of 356.37
BOUGHT QTY: 1 on 2019-06-11 00:00:00 at the price of 355.0
SOLD QTY: -1 on 2019-06-12 00:00:00 at the price of 351.82
BOUGHT QTY: 1 on 2019-06-24 00:00:00 at the price of 370.27
SOLD QTY: -1 on 2019-07-23 00:00:00 at the price of 311.44
BOUGHT QTY: 1 on 2019-08-15 00:00:00 at the price of 299.5
SOLD QTY: -1 on 2019-08-16 00:00:00 at the price of 298.86
BOUGHT QTY: 1 on 2019-10-17 00:00:00 at the price of 304.49
SOLD QTY: -1 on 2019-11-07 00:00:00 at the price of 290.7
BOUGHT QTY: 1 on 2019-11-12 00:00:00 at the price of 295.32
SOLD QTY: -1 on 2019-12-17 00:00:00 at the price of 307.36
BOUGHT QTY: 1 on 2019-12-26 00:00:00 at the price of 334.6
SOLD QTY: -1 on 2020-01-21 00:00:00 at the price of 340.0
BOUGHT QTY: 1 on 2020-01-22 00:00:00 at the price of 332.55
SOLD QTY: -1 on 2020-03-10 00:00:00 at the price of 356.425
BOUGHT QTY: 1 on 2020-04-06 00:00:00 at the price of 365.22
SOLD QTY: -1 on 2020-05-12 00:00:00 at the price of 442.0
BOUGHT QTY: 1 on 2020-05-18 00:00:00 at the price of 451.16
SOLD QTY: -1 on 2020-06-03 00:00:00 at the price of 426.95
BOUGHT QTY: 1 on 2020-06-19 00:00:00 at the price of 449.12
           trade_action qty_onhand cost_basis sold_transaction gain_loss  \
date                                                                       
2019-01-10            1          1     314.57                0         0   
2019-02-08           -1          0          0              338     23.43   
2019-02-14            1          1     351.75                0         0   
2019-03-15           -1          0          0           361.02      9.27   
2019-03-26            1          1     367.87                0         0   
2019-04-12           -1          0          0           360.69     -7.18   
2019-04-22            1          1      359.7                0         0   
2019-04-29           -1          0          0           373.68     13.98   
2019-05-02            1          1        378                0         0   
2019-05-16           -1          0          0           356.37    -21.63   
2019-06-11            1          1        355                0         0   
2019-06-12           -1          0          0           351.82     -3.18   
2019-06-24            1          1     370.27                0         0   
2019-07-23           -1          0          0           311.44    -58.83   
2019-08-15            1          1      299.5                0         0   
2019-08-16           -1          0          0           298.86     -0.64   
2019-10-17            1          1     304.49                0         0   
2019-11-07           -1          0          0            290.7    -13.79   
2019-11-12            1          1     295.32                0         0   
2019-12-17           -1          0          0           307.36     12.04   
2019-12-26            1          1      334.6                0         0   
2020-01-21           -1          0          0              340       5.4   
2020-01-22            1          1     332.55                0         0   
2020-03-10           -1          0          0          356.425    23.875   
2020-04-06            1          1     365.22                0         0   
2020-05-12           -1          0          0              442     76.78   
2020-05-18            1          1     451.16                0         0   
2020-06-03           -1          0          0           426.95    -24.21   
2020-06-19            1          1     449.12                0         0   

           cash_onhand position_value total_position accumu_return  
date                                                                
2019-01-10     -314.57         324.66          10.09         10.09  
2019-02-08       23.43              0          23.43         23.43  
2019-02-14     -328.32         359.07          30.75         30.75  
2019-03-15        32.7              0           32.7          32.7  
2019-03-26     -335.17         359.97           24.8          24.8  
2019-04-12       25.52              0          25.52         25.52  
2019-04-22     -334.18         377.34          43.16         43.16  
2019-04-29        39.5              0           39.5          39.5  
2019-05-02      -338.5         379.06          40.56         40.56  
2019-05-16       17.87              0          17.87         17.87  
2019-06-11     -337.13         351.27          14.14         14.14  
2019-06-12       14.69              0          14.69         14.69  
2019-06-24     -355.58         371.04          15.46         15.46  
2019-07-23      -44.14              0         -44.14        -44.14  
2019-08-15     -343.64         295.76         -47.88        -47.88  
2019-08-16      -44.78              0         -44.78        -44.78  
2019-10-17     -349.27         293.35         -55.92        -55.92  
2019-11-07      -58.57              0         -58.57        -58.57  
2019-11-12     -353.89         292.01         -61.88        -61.88  
2019-12-17      -46.53              0         -46.53        -46.53  
2019-12-26     -381.13         332.63          -48.5         -48.5  
2020-01-21      -41.13              0         -41.13        -41.13  
2020-01-22     -373.68            326         -47.68        -47.68  
2020-03-10     -17.255              0        -17.255       -17.255  
2020-04-06    -382.475         379.96         -2.515        -2.515  
2020-05-12      59.525              0         59.525        59.525  
2020-05-18    -391.635         452.58         60.945        60.945  
2020-06-03      35.315              0         35.315        35.315  
2020-06-19    -413.805         453.72         39.915        39.915  
Accumulated profit/loss for one share of stock with initial capital of $0 at the end of modeling period: $41.23
The current status of the model is: Holding a position since 2020-06-19 00:00:00 

Processing portfolio for model: SMA_007_SlowMA_25_FastMA_05
BOUGHT QTY: 1 on 2019-01-07 00:00:00 at the price of 302.1
SOLD QTY: -1 on 2019-03-11 00:00:00 at the price of 352.0
BOUGHT QTY: 1 on 2019-03-15 00:00:00 at the price of 361.02
SOLD QTY: -1 on 2019-03-29 00:00:00 at the price of 357.16
BOUGHT QTY: 1 on 2019-04-04 00:00:00 at the price of 370.07
SOLD QTY: -1 on 2019-04-15 00:00:00 at the price of 350.71
BOUGHT QTY: 1 on 2019-04-24 00:00:00 at the price of 381.07
SOLD QTY: -1 on 2019-05-13 00:00:00 at the price of 352.29
BOUGHT QTY: 1 on 2019-06-11 00:00:00 at the price of 355.0
SOLD QTY: -1 on 2019-06-14 00:00:00 at the price of 341.63
BOUGHT QTY: 1 on 2019-06-21 00:00:00 at the price of 365.0
SOLD QTY: -1 on 2019-07-19 00:00:00 at the price of 323.4
BOUGHT QTY: 1 on 2019-10-15 00:00:00 at the price of 283.82
SOLD QTY: -1 on 2019-10-25 00:00:00 at the price of 270.68
BOUGHT QTY: 1 on 2019-10-29 00:00:00 at the price of 281.87
SOLD QTY: -1 on 2019-12-12 00:00:00 at the price of 295.67
BOUGHT QTY: 1 on 2019-12-19 00:00:00 at the price of 324.5
SOLD QTY: -1 on 2020-03-10 00:00:00 at the price of 356.425
BOUGHT QTY: 1 on 2020-03-30 00:00:00 at the price of 363.0
SOLD QTY: -1 on 2020-05-28 00:00:00 at the price of 417.24
BOUGHT QTY: 1 on 2020-06-19 00:00:00 at the price of 449.12
           trade_action qty_onhand cost_basis sold_transaction gain_loss  \
date                                                                       
2019-01-07            1          1      302.1                0         0   
2019-03-11           -1          0          0              352      49.9   
2019-03-15            1          1     361.02                0         0   
2019-03-29           -1          0          0           357.16     -3.86   
2019-04-04            1          1     370.07                0         0   
2019-04-15           -1          0          0           350.71    -19.36   
2019-04-24            1          1     381.07                0         0   
2019-05-13           -1          0          0           352.29    -28.78   
2019-06-11            1          1        355                0         0   
2019-06-14           -1          0          0           341.63    -13.37   
2019-06-21            1          1        365                0         0   
2019-07-19           -1          0          0            323.4     -41.6   
2019-10-15            1          1     283.82                0         0   
2019-10-25           -1          0          0           270.68    -13.14   
2019-10-29            1          1     281.87                0         0   
2019-12-12           -1          0          0           295.67      13.8   
2019-12-19            1          1      324.5                0         0   
2020-03-10           -1          0          0          356.425    31.925   
2020-03-30            1          1        363                0         0   
2020-05-28           -1          0          0           417.24     54.24   
2020-06-19            1          1     449.12                0         0   

           cash_onhand position_value total_position accumu_return  
date                                                                
2019-01-07      -302.1         315.34          13.24         13.24  
2019-03-11        49.9              0           49.9          49.9  
2019-03-15     -311.12         361.46          50.34         50.34  
2019-03-29       46.04              0          46.04         46.04  
2019-04-04     -324.03         367.88          43.85         43.85  
2019-04-15       26.68              0          26.68         26.68  
2019-04-24     -354.39         374.23          19.84         19.84  
2019-05-13        -2.1              0           -2.1          -2.1  
2019-06-11      -357.1         351.27          -5.83         -5.83  
2019-06-14      -15.47              0         -15.47        -15.47  
2019-06-21     -380.47         369.21         -11.26        -11.26  
2019-07-19      -57.07              0         -57.07        -57.07  
2019-10-15     -340.89         284.25         -56.64        -56.64  
2019-10-25      -70.21              0         -70.21        -70.21  
2019-10-29     -352.08         281.21         -70.87        -70.87  
2019-12-12      -56.41              0         -56.41        -56.41  
2019-12-19     -380.91         332.22         -48.69        -48.69  
2020-03-10     -24.485              0        -24.485       -24.485  
2020-03-30    -387.485         370.96        -16.525       -16.525  
2020-05-28      29.755              0         29.755        29.755  
2020-06-19    -419.365         453.72         34.355        34.355  
Accumulated profit/loss for one share of stock with initial capital of $0 at the end of modeling period: $35.68
The current status of the model is: Holding a position since 2020-06-19 00:00:00 

Processing portfolio for model: SMA_008_SlowMA_25_FastMA_10
BOUGHT QTY: 1 on 2019-01-09 00:00:00 at the price of 317.71
SOLD QTY: -1 on 2019-03-13 00:00:00 at the price of 355.81
BOUGHT QTY: 1 on 2019-03-21 00:00:00 at the price of 374.0
SOLD QTY: -1 on 2019-04-17 00:00:00 at the price of 365.05
BOUGHT QTY: 1 on 2019-04-26 00:00:00 at the price of 368.35
SOLD QTY: -1 on 2019-05-16 00:00:00 at the price of 356.37
BOUGHT QTY: 1 on 2019-06-18 00:00:00 at the price of 355.57
SOLD QTY: -1 on 2019-06-19 00:00:00 at the price of 361.72
BOUGHT QTY: 1 on 2019-06-21 00:00:00 at the price of 365.0
SOLD QTY: -1 on 2019-07-22 00:00:00 at the price of 312.0
BOUGHT QTY: 1 on 2019-10-17 00:00:00 at the price of 304.49
SOLD QTY: -1 on 2019-12-16 00:00:00 at the price of 300.85
BOUGHT QTY: 1 on 2019-12-20 00:00:00 at the price of 335.0
SOLD QTY: -1 on 2020-03-09 00:00:00 at the price of 343.86
BOUGHT QTY: 1 on 2020-04-02 00:00:00 at the price of 364.08
SOLD QTY: -1 on 2020-06-03 00:00:00 at the price of 426.95
BOUGHT QTY: 1 on 2020-06-22 00:00:00 at the price of 455.01
           trade_action qty_onhand cost_basis sold_transaction gain_loss  \
date                                                                       
2019-01-09            1          1     317.71                0         0   
2019-03-13           -1          0          0           355.81      38.1   
2019-03-21            1          1        374                0         0   
2019-04-17           -1          0          0           365.05     -8.95   
2019-04-26            1          1     368.35                0         0   
2019-05-16           -1          0          0           356.37    -11.98   
2019-06-18            1          1     355.57                0         0   
2019-06-19           -1          0          0           361.72      6.15   
2019-06-21            1          1        365                0         0   
2019-07-22           -1          0          0              312       -53   
2019-10-17            1          1     304.49                0         0   
2019-12-16           -1          0          0           300.85     -3.64   
2019-12-20            1          1        335                0         0   
2020-03-09           -1          0          0           343.86      8.86   
2020-04-02            1          1     364.08                0         0   
2020-06-03           -1          0          0           426.95     62.87   
2020-06-22            1          1     455.01                0         0   

           cash_onhand position_value total_position accumu_return  
date                                                                
2019-01-09     -317.71         319.96           2.25          2.25  
2019-03-13        38.1              0           38.1          38.1  
2019-03-21      -335.9         377.87          41.97         41.97  
2019-04-17       29.15              0          29.15         29.15  
2019-04-26      -339.2         374.85          35.65         35.65  
2019-05-16       17.17              0          17.17         17.17  
2019-06-18      -338.4         357.12          18.72         18.72  
2019-06-19       23.32              0          23.32         23.32  
2019-06-21     -341.68         369.21          27.53         27.53  
2019-07-22      -29.68              0         -29.68        -29.68  
2019-10-17     -334.17         293.35         -40.82        -40.82  
2019-12-16      -33.32              0         -33.32        -33.32  
2019-12-20     -368.32          336.9         -31.42        -31.42  
2020-03-09      -24.46              0         -24.46        -24.46  
2020-04-02     -388.54         370.08         -18.46        -18.46  
2020-06-03       38.41              0          38.41         38.41  
2020-06-22      -416.6         468.04          51.44         51.44  
Accumulated profit/loss for one share of stock with initial capital of $0 at the end of modeling period: $38.44
The current status of the model is: Holding a position since 2020-06-22 00:00:00 

Processing portfolio for model: SMA_009_SlowMA_25_FastMA_15
BOUGHT QTY: 1 on 2019-01-10 00:00:00 at the price of 314.57
SOLD QTY: -1 on 2019-03-20 00:00:00 at the price of 358.91
BOUGHT QTY: 1 on 2019-03-26 00:00:00 at the price of 367.87
SOLD QTY: -1 on 2019-04-15 00:00:00 at the price of 350.71
BOUGHT QTY: 1 on 2019-04-23 00:00:00 at the price of 375.45
SOLD QTY: -1 on 2019-05-21 00:00:00 at the price of 350.95
BOUGHT QTY: 1 on 2019-06-24 00:00:00 at the price of 370.27
SOLD QTY: -1 on 2019-07-23 00:00:00 at the price of 311.44
BOUGHT QTY: 1 on 2019-10-21 00:00:00 at the price of 272.89
SOLD QTY: -1 on 2020-03-11 00:00:00 at the price of 358.92
BOUGHT QTY: 1 on 2020-04-07 00:00:00 at the price of 380.0
SOLD QTY: -1 on 2020-06-08 00:00:00 at the price of 416.0
BOUGHT QTY: 1 on 2020-06-23 00:00:00 at the price of 466.5
           trade_action qty_onhand cost_basis sold_transaction gain_loss  \
date                                                                       
2019-01-10            1          1     314.57                0         0   
2019-03-20           -1          0          0           358.91     44.34   
2019-03-26            1          1     367.87                0         0   
2019-04-15           -1          0          0           350.71    -17.16   
2019-04-23            1          1     375.45                0         0   
2019-05-21           -1          0          0           350.95     -24.5   
2019-06-24            1          1     370.27                0         0   
2019-07-23           -1          0          0           311.44    -58.83   
2019-10-21            1          1     272.89                0         0   
2020-03-11           -1          0          0           358.92     86.03   
2020-04-07            1          1        380                0         0   
2020-06-08           -1          0          0              416        36   
2020-06-23            1          1      466.5                0         0   

           cash_onhand position_value total_position accumu_return  
date                                                                
2019-01-10     -314.57         324.66          10.09         10.09  
2019-03-20       44.34              0          44.34         44.34  
2019-03-26     -323.53         359.97          36.44         36.44  
2019-04-15       27.18              0          27.18         27.18  
2019-04-23     -348.27         381.89          33.62         33.62  
2019-05-21        2.68              0           2.68          2.68  
2019-06-24     -367.59         371.04           3.45          3.45  
2019-07-23      -56.15              0         -56.15        -56.15  
2019-10-21     -329.04         278.05         -50.99        -50.99  
2020-03-11       29.88              0          29.88         29.88  
2020-04-07     -350.12         372.28          22.16         22.16  
2020-06-08       65.88              0          65.88         65.88  
2020-06-23     -400.62         466.26          65.64         65.64  
Accumulated profit/loss for one share of stock with initial capital of $0 at the end of modeling period: $54.42
The current status of the model is: Holding a position since 2020-06-23 00:00:00 

Processing portfolio for model: SMA_010_SlowMA_25_FastMA_20
BOUGHT QTY: 1 on 2019-01-11 00:00:00 at the price of 330.96
SOLD QTY: -1 on 2019-02-19 00:00:00 at the price of 355.8
BOUGHT QTY: 1 on 2019-02-21 00:00:00 at the price of 360.03
SOLD QTY: -1 on 2019-03-26 00:00:00 at the price of 367.87
BOUGHT QTY: 1 on 2019-04-02 00:00:00 at the price of 366.25
SOLD QTY: -1 on 2019-04-18 00:00:00 at the price of 355.0
BOUGHT QTY: 1 on 2019-04-26 00:00:00 at the price of 368.35
SOLD QTY: -1 on 2019-05-22 00:00:00 at the price of 358.01
BOUGHT QTY: 1 on 2019-06-27 00:00:00 at the price of 363.2
SOLD QTY: -1 on 2019-07-24 00:00:00 at the price of 310.51
BOUGHT QTY: 1 on 2019-10-23 00:00:00 at the price of 268.06
SOLD QTY: -1 on 2019-11-15 00:00:00 at the price of 290.59
BOUGHT QTY: 1 on 2019-11-19 00:00:00 at the price of 304.01
SOLD QTY: -1 on 2020-03-13 00:00:00 at the price of 330.51
BOUGHT QTY: 1 on 2020-04-13 00:00:00 at the price of 371.31
SOLD QTY: -1 on 2020-05-20 00:00:00 at the price of 454.25
BOUGHT QTY: 1 on 2020-05-21 00:00:00 at the price of 448.56
SOLD QTY: -1 on 2020-06-09 00:00:00 at the price of 421.65
BOUGHT QTY: 1 on 2020-06-25 00:00:00 at the price of 458.86
           trade_action qty_onhand cost_basis sold_transaction gain_loss  \
date                                                                       
2019-01-11            1          1     330.96                0         0   
2019-02-19           -1          0          0            355.8     24.84   
2019-02-21            1          1     360.03                0         0   
2019-03-26           -1          0          0           367.87      7.84   
2019-04-02            1          1     366.25                0         0   
2019-04-18           -1          0          0              355    -11.25   
2019-04-26            1          1     368.35                0         0   
2019-05-22           -1          0          0           358.01    -10.34   
2019-06-27            1          1      363.2                0         0   
2019-07-24           -1          0          0           310.51    -52.69   
2019-10-23            1          1     268.06                0         0   
2019-11-15           -1          0          0           290.59     22.53   
2019-11-19            1          1     304.01                0         0   
2020-03-13           -1          0          0           330.51      26.5   
2020-04-13            1          1     371.31                0         0   
2020-05-20           -1          0          0           454.25     82.94   
2020-05-21            1          1     448.56                0         0   
2020-06-09           -1          0          0           421.65    -26.91   
2020-06-25            1          1     458.86                0         0   

           cash_onhand position_value total_position accumu_return  
date                                                                
2019-01-11     -330.96         337.59           6.63          6.63  
2019-02-19       24.84              0          24.84         24.84  
2019-02-21     -335.19         356.97          21.78         21.78  
2019-03-26       32.68              0          32.68         32.68  
2019-04-02     -333.57         367.72          34.15         34.15  
2019-04-18       21.43              0          21.43         21.43  
2019-04-26     -346.92         374.85          27.93         27.93  
2019-05-22       11.09              0          11.09         11.09  
2019-06-27     -352.11         370.02          17.91         17.91  
2019-07-24       -41.6              0          -41.6         -41.6  
2019-10-23     -309.66         271.27         -38.39        -38.39  
2019-11-15      -19.07              0         -19.07        -19.07  
2019-11-19     -323.08          302.6         -20.48        -20.48  
2020-03-13        7.43              0           7.43          7.43  
2020-04-13     -363.88         396.72          32.84         32.84  
2020-05-20       90.37              0          90.37         90.37  
2020-05-21     -358.19         436.25          78.06         78.06  
2020-06-09       63.46              0          63.46         63.46  
2020-06-25      -395.4         465.91          70.51         70.51  
Accumulated profit/loss for one share of stock with initial capital of $0 at the end of modeling period: $59.64
The current status of the model is: Holding a position since 2020-06-25 00:00:00 

Processing portfolio for model: SMA_011_SlowMA_30_FastMA_05
BOUGHT QTY: 1 on 2019-01-07 00:00:00 at the price of 302.1
SOLD QTY: -1 on 2019-03-29 00:00:00 at the price of 357.16
BOUGHT QTY: 1 on 2019-04-04 00:00:00 at the price of 370.07
SOLD QTY: -1 on 2019-04-16 00:00:00 at the price of 355.0
BOUGHT QTY: 1 on 2019-04-24 00:00:00 at the price of 381.07
SOLD QTY: -1 on 2019-05-13 00:00:00 at the price of 352.29
BOUGHT QTY: 1 on 2019-06-21 00:00:00 at the price of 365.0
SOLD QTY: -1 on 2019-07-19 00:00:00 at the price of 323.4
BOUGHT QTY: 1 on 2019-10-16 00:00:00 at the price of 283.12
SOLD QTY: -1 on 2019-10-25 00:00:00 at the price of 270.68
BOUGHT QTY: 1 on 2019-10-30 00:00:00 at the price of 284.34
SOLD QTY: -1 on 2019-12-16 00:00:00 at the price of 300.85
BOUGHT QTY: 1 on 2019-12-18 00:00:00 at the price of 316.26
SOLD QTY: -1 on 2020-03-10 00:00:00 at the price of 356.425
BOUGHT QTY: 1 on 2020-03-31 00:00:00 at the price of 367.93
SOLD QTY: -1 on 2020-05-28 00:00:00 at the price of 417.24
BOUGHT QTY: 1 on 2020-06-19 00:00:00 at the price of 449.12
           trade_action qty_onhand cost_basis sold_transaction gain_loss  \
date                                                                       
2019-01-07            1          1      302.1                0         0   
2019-03-29           -1          0          0           357.16     55.06   
2019-04-04            1          1     370.07                0         0   
2019-04-16           -1          0          0              355    -15.07   
2019-04-24            1          1     381.07                0         0   
2019-05-13           -1          0          0           352.29    -28.78   
2019-06-21            1          1        365                0         0   
2019-07-19           -1          0          0            323.4     -41.6   
2019-10-16            1          1     283.12                0         0   
2019-10-25           -1          0          0           270.68    -12.44   
2019-10-30            1          1     284.34                0         0   
2019-12-16           -1          0          0           300.85     16.51   
2019-12-18            1          1     316.26                0         0   
2020-03-10           -1          0          0          356.425    40.165   
2020-03-31            1          1     367.93                0         0   
2020-05-28           -1          0          0           417.24     49.31   
2020-06-19            1          1     449.12                0         0   

           cash_onhand position_value total_position accumu_return  
date                                                                
2019-01-07      -302.1         315.34          13.24         13.24  
2019-03-29       55.06              0          55.06         55.06  
2019-04-04     -315.01         367.88          52.87         52.87  
2019-04-16       39.99              0          39.99         39.99  
2019-04-24     -341.08         374.23          33.15         33.15  
2019-05-13       11.21              0          11.21         11.21  
2019-06-21     -353.79         369.21          15.42         15.42  
2019-07-19      -30.39              0         -30.39        -30.39  
2019-10-16     -313.51         286.28         -27.23        -27.23  
2019-10-25      -42.83              0         -42.83        -42.83  
2019-10-30     -327.17         291.45         -35.72        -35.72  
2019-12-16      -26.32              0         -26.32        -26.32  
2019-12-18     -342.58          320.8         -21.78        -21.78  
2020-03-10      13.845              0         13.845        13.845  
2020-03-31    -354.085          375.5         21.415        21.415  
2020-05-28      63.155              0         63.155        63.155  
2020-06-19    -385.965         453.72         67.755        67.755  
Accumulated profit/loss for one share of stock with initial capital of $0 at the end of modeling period: $69.08
The current status of the model is: Holding a position since 2020-06-19 00:00:00 

Processing portfolio for model: SMA_012_SlowMA_30_FastMA_10
BOUGHT QTY: 1 on 2019-01-09 00:00:00 at the price of 317.71
SOLD QTY: -1 on 2019-04-18 00:00:00 at the price of 355.0
BOUGHT QTY: 1 on 2019-04-25 00:00:00 at the price of 374.49
SOLD QTY: -1 on 2019-05-16 00:00:00 at the price of 356.37
BOUGHT QTY: 1 on 2019-06-21 00:00:00 at the price of 365.0
SOLD QTY: -1 on 2019-07-23 00:00:00 at the price of 311.44
BOUGHT QTY: 1 on 2019-10-18 00:00:00 at the price of 289.36
SOLD QTY: -1 on 2020-03-12 00:00:00 at the price of 326.5
BOUGHT QTY: 1 on 2020-04-03 00:00:00 at the price of 367.36
SOLD QTY: -1 on 2020-06-03 00:00:00 at the price of 426.95
BOUGHT QTY: 1 on 2020-06-22 00:00:00 at the price of 455.01
           trade_action qty_onhand cost_basis sold_transaction gain_loss  \
date                                                                       
2019-01-09            1          1     317.71                0         0   
2019-04-18           -1          0          0              355     37.29   
2019-04-25            1          1     374.49                0         0   
2019-05-16           -1          0          0           356.37    -18.12   
2019-06-21            1          1        365                0         0   
2019-07-23           -1          0          0           311.44    -53.56   
2019-10-18            1          1     289.36                0         0   
2020-03-12           -1          0          0            326.5     37.14   
2020-04-03            1          1     367.36                0         0   
2020-06-03           -1          0          0           426.95     59.59   
2020-06-22            1          1     455.01                0         0   

           cash_onhand position_value total_position accumu_return  
date                                                                
2019-01-09     -317.71         319.96           2.25          2.25  
2019-04-18       37.29              0          37.29         37.29  
2019-04-25      -337.2         368.33          31.13         31.13  
2019-05-16       19.17              0          19.17         19.17  
2019-06-21     -345.83         369.21          23.38         23.38  
2019-07-23      -34.39              0         -34.39        -34.39  
2019-10-18     -323.75          275.3         -48.45        -48.45  
2020-03-12        2.75              0           2.75          2.75  
2020-04-03     -364.61         361.76          -2.85         -2.85  
2020-06-03       62.34              0          62.34         62.34  
2020-06-22     -392.67         468.04          75.37         75.37  
Accumulated profit/loss for one share of stock with initial capital of $0 at the end of modeling period: $62.37
The current status of the model is: Holding a position since 2020-06-22 00:00:00 

Processing portfolio for model: SMA_013_SlowMA_30_FastMA_15
BOUGHT QTY: 1 on 2019-01-11 00:00:00 at the price of 330.96
SOLD QTY: -1 on 2019-04-17 00:00:00 at the price of 365.05
BOUGHT QTY: 1 on 2019-04-18 00:00:00 at the price of 355.0
SOLD QTY: -1 on 2019-05-21 00:00:00 at the price of 350.95
BOUGHT QTY: 1 on 2019-06-24 00:00:00 at the price of 370.27
SOLD QTY: -1 on 2019-07-24 00:00:00 at the price of 310.51
BOUGHT QTY: 1 on 2019-10-24 00:00:00 at the price of 271.81
SOLD QTY: -1 on 2020-03-13 00:00:00 at the price of 330.51
BOUGHT QTY: 1 on 2020-04-08 00:00:00 at the price of 374.01
SOLD QTY: -1 on 2020-06-09 00:00:00 at the price of 421.65
BOUGHT QTY: 1 on 2020-06-24 00:00:00 at the price of 468.54
           trade_action qty_onhand cost_basis sold_transaction gain_loss  \
date                                                                       
2019-01-11            1          1     330.96                0         0   
2019-04-17           -1          0          0           365.05     34.09   
2019-04-18            1          1        355                0         0   
2019-05-21           -1          0          0           350.95     -4.05   
2019-06-24            1          1     370.27                0         0   
2019-07-24           -1          0          0           310.51    -59.76   
2019-10-24            1          1     271.81                0         0   
2020-03-13           -1          0          0           330.51      58.7   
2020-04-08            1          1     374.01                0         0   
2020-06-09           -1          0          0           421.65     47.64   
2020-06-24            1          1     468.54                0         0   

           cash_onhand position_value total_position accumu_return  
date                                                                
2019-01-11     -330.96         337.59           6.63          6.63  
2019-04-17       34.09              0          34.09         34.09  
2019-04-18     -320.91         360.35          39.44         39.44  
2019-05-21       30.04              0          30.04         30.04  
2019-06-24     -340.23         371.04          30.81         30.81  
2019-07-24      -29.72              0         -29.72        -29.72  
2019-10-24     -301.53          271.5         -30.03        -30.03  
2020-03-13       28.98              0          28.98         28.98  
2020-04-08     -345.03         371.12          26.09         26.09  
2020-06-09       76.62              0          76.62         76.62  
2020-06-24     -391.92         457.85          65.93         65.93  
Accumulated profit/loss for one share of stock with initial capital of $0 at the end of modeling period: $63.12
The current status of the model is: Holding a position since 2020-06-24 00:00:00 

Processing portfolio for model: SMA_014_SlowMA_30_FastMA_20
BOUGHT QTY: 1 on 2019-01-14 00:00:00 at the price of 334.24
SOLD QTY: -1 on 2019-03-28 00:00:00 at the price of 354.485
BOUGHT QTY: 1 on 2019-04-02 00:00:00 at the price of 366.25
SOLD QTY: -1 on 2019-04-22 00:00:00 at the price of 359.7
BOUGHT QTY: 1 on 2019-04-26 00:00:00 at the price of 368.35
SOLD QTY: -1 on 2019-05-24 00:00:00 at the price of 355.41
BOUGHT QTY: 1 on 2019-06-25 00:00:00 at the price of 370.75
SOLD QTY: -1 on 2019-07-26 00:00:00 at the price of 328.79
BOUGHT QTY: 1 on 2019-10-28 00:00:00 at the price of 278.05
SOLD QTY: -1 on 2020-03-16 00:00:00 at the price of 306.63
BOUGHT QTY: 1 on 2020-04-15 00:00:00 at the price of 413.0
SOLD QTY: -1 on 2020-06-12 00:00:00 at the price of 429.0
BOUGHT QTY: 1 on 2020-06-26 00:00:00 at the price of 466.39
           trade_action qty_onhand cost_basis sold_transaction gain_loss  \
date                                                                       
2019-01-14            1          1     334.24                0         0   
2019-03-28           -1          0          0          354.485    20.245   
2019-04-02            1          1     366.25                0         0   
2019-04-22           -1          0          0            359.7     -6.55   
2019-04-26            1          1     368.35                0         0   
2019-05-24           -1          0          0           355.41    -12.94   
2019-06-25            1          1     370.75                0         0   
2019-07-26           -1          0          0           328.79    -41.96   
2019-10-28            1          1     278.05                0         0   
2020-03-16           -1          0          0           306.63     28.58   
2020-04-15            1          1        413                0         0   
2020-06-12           -1          0          0              429        16   
2020-06-26            1          1     466.39                0         0   

           cash_onhand position_value total_position accumu_return  
date                                                                
2019-01-14     -334.24         332.94           -1.3          -1.3  
2019-03-28      20.245              0         20.245        20.245  
2019-04-02    -346.005         367.72         21.715        21.715  
2019-04-22      13.695              0         13.695        13.695  
2019-04-26    -354.655         374.85         20.195        20.195  
2019-05-24       0.755              0          0.755         0.755  
2019-06-25    -369.995          360.3         -9.695        -9.695  
2019-07-26     -41.205              0        -41.205       -41.205  
2019-10-28    -319.255         281.86        -37.395       -37.395  
2020-03-16     -12.625              0        -12.625       -12.625  
2020-04-15    -425.625         426.75          1.125         1.125  
2020-06-12       3.375              0          3.375         3.375  
2020-06-26    -463.015          443.4        -19.615       -19.615  
Accumulated profit/loss for one share of stock with initial capital of $0 at the end of modeling period: $-7.97
The current status of the model is: Holding a position since 2020-06-26 00:00:00 

Processing portfolio for model: SMA_015_SlowMA_35_FastMA_05
BOUGHT QTY: 1 on 2019-01-07 00:00:00 at the price of 302.1
SOLD QTY: -1 on 2019-04-01 00:00:00 at the price of 359.0
BOUGHT QTY: 1 on 2019-04-04 00:00:00 at the price of 370.07
SOLD QTY: -1 on 2019-04-16 00:00:00 at the price of 355.0
BOUGHT QTY: 1 on 2019-04-24 00:00:00 at the price of 381.07
SOLD QTY: -1 on 2019-05-14 00:00:00 at the price of 348.71
BOUGHT QTY: 1 on 2019-06-24 00:00:00 at the price of 370.27
SOLD QTY: -1 on 2019-07-19 00:00:00 at the price of 323.4
BOUGHT QTY: 1 on 2019-10-17 00:00:00 at the price of 304.49
SOLD QTY: -1 on 2019-10-24 00:00:00 at the price of 271.81
BOUGHT QTY: 1 on 2019-10-31 00:00:00 at the price of 291.0
SOLD QTY: -1 on 2020-03-12 00:00:00 at the price of 326.5
BOUGHT QTY: 1 on 2020-04-01 00:00:00 at the price of 376.05
SOLD QTY: -1 on 2020-05-29 00:00:00 at the price of 417.46
BOUGHT QTY: 1 on 2020-06-18 00:00:00 at the price of 448.73
           trade_action qty_onhand cost_basis sold_transaction gain_loss  \
date                                                                       
2019-01-07            1          1      302.1                0         0   
2019-04-01           -1          0          0              359      56.9   
2019-04-04            1          1     370.07                0         0   
2019-04-16           -1          0          0              355    -15.07   
2019-04-24            1          1     381.07                0         0   
2019-05-14           -1          0          0           348.71    -32.36   
2019-06-24            1          1     370.27                0         0   
2019-07-19           -1          0          0            323.4    -46.87   
2019-10-17            1          1     304.49                0         0   
2019-10-24           -1          0          0           271.81    -32.68   
2019-10-31            1          1        291                0         0   
2020-03-12           -1          0          0            326.5      35.5   
2020-04-01            1          1     376.05                0         0   
2020-05-29           -1          0          0           417.46     41.41   
2020-06-18            1          1     448.73                0         0   

           cash_onhand position_value total_position accumu_return  
date                                                                
2019-01-07      -302.1         315.34          13.24         13.24  
2019-04-01        56.9              0           56.9          56.9  
2019-04-04     -313.17         367.88          54.71         54.71  
2019-04-16       41.83              0          41.83         41.83  
2019-04-24     -339.24         374.23          34.99         34.99  
2019-05-14        9.47              0           9.47          9.47  
2019-06-24      -360.8         371.04          10.24         10.24  
2019-07-19       -37.4              0          -37.4         -37.4  
2019-10-17     -341.89         293.35         -48.54        -48.54  
2019-10-24      -70.08              0         -70.08        -70.08  
2019-10-31     -361.08         287.41         -73.67        -73.67  
2020-03-12      -34.58              0         -34.58        -34.58  
2020-04-01     -410.63         364.08         -46.55        -46.55  
2020-05-29        6.83              0           6.83          6.83  
2020-06-18      -441.9         449.87           7.97          7.97  
Accumulated profit/loss for one share of stock with initial capital of $0 at the end of modeling period: $13.14
The current status of the model is: Holding a position since 2020-06-18 00:00:00 

Processing portfolio for model: SMA_016_SlowMA_35_FastMA_10
BOUGHT QTY: 1 on 2019-01-09 00:00:00 at the price of 317.71
SOLD QTY: -1 on 2019-04-22 00:00:00 at the price of 359.7
BOUGHT QTY: 1 on 2019-04-24 00:00:00 at the price of 381.07
SOLD QTY: -1 on 2019-05-16 00:00:00 at the price of 356.37
BOUGHT QTY: 1 on 2019-06-25 00:00:00 at the price of 370.75
SOLD QTY: -1 on 2019-07-23 00:00:00 at the price of 311.44
BOUGHT QTY: 1 on 2019-10-22 00:00:00 at the price of 271.159
SOLD QTY: -1 on 2020-03-13 00:00:00 at the price of 330.51
BOUGHT QTY: 1 on 2020-04-06 00:00:00 at the price of 365.22
SOLD QTY: -1 on 2020-06-03 00:00:00 at the price of 426.95
BOUGHT QTY: 1 on 2020-06-19 00:00:00 at the price of 449.12
           trade_action qty_onhand cost_basis sold_transaction gain_loss  \
date                                                                       
2019-01-09            1          1     317.71                0         0   
2019-04-22           -1          0          0            359.7     41.99   
2019-04-24            1          1     381.07                0         0   
2019-05-16           -1          0          0           356.37     -24.7   
2019-06-25            1          1     370.75                0         0   
2019-07-23           -1          0          0           311.44    -59.31   
2019-10-22            1          1    271.159                0         0   
2020-03-13           -1          0          0           330.51    59.351   
2020-04-06            1          1     365.22                0         0   
2020-06-03           -1          0          0           426.95     61.73   
2020-06-19            1          1     449.12                0         0   

           cash_onhand position_value total_position accumu_return  
date                                                                
2019-01-09     -317.71         319.96           2.25          2.25  
2019-04-22       41.99              0          41.99         41.99  
2019-04-24     -339.08         374.23          35.15         35.15  
2019-05-16       17.29              0          17.29         17.29  
2019-06-25     -353.46          360.3           6.84          6.84  
2019-07-23      -42.02              0         -42.02        -42.02  
2019-10-22    -313.179         266.69        -46.489       -46.489  
2020-03-13      17.331              0         17.331        17.331  
2020-04-06    -347.889         379.96         32.071        32.071  
2020-06-03      79.061              0         79.061        79.061  
2020-06-19    -370.059         453.72         83.661        83.661  
Accumulated profit/loss for one share of stock with initial capital of $0 at the end of modeling period: $84.98
The current status of the model is: Holding a position since 2020-06-19 00:00:00 

Processing portfolio for model: SMA_017_SlowMA_35_FastMA_15
BOUGHT QTY: 1 on 2019-01-10 00:00:00 at the price of 314.57
SOLD QTY: -1 on 2019-05-21 00:00:00 at the price of 350.95
BOUGHT QTY: 1 on 2019-06-25 00:00:00 at the price of 370.75
SOLD QTY: -1 on 2019-07-25 00:00:00 at the price of 318.86
BOUGHT QTY: 1 on 2019-10-28 00:00:00 at the price of 278.05
SOLD QTY: -1 on 2020-03-13 00:00:00 at the price of 330.51
BOUGHT QTY: 1 on 2020-04-09 00:00:00 at the price of 371.06
SOLD QTY: -1 on 2020-06-09 00:00:00 at the price of 421.65
BOUGHT QTY: 1 on 2020-06-24 00:00:00 at the price of 468.54
           trade_action qty_onhand cost_basis sold_transaction gain_loss  \
date                                                                       
2019-01-10            1          1     314.57                0         0   
2019-05-21           -1          0          0           350.95     36.38   
2019-06-25            1          1     370.75                0         0   
2019-07-25           -1          0          0           318.86    -51.89   
2019-10-28            1          1     278.05                0         0   
2020-03-13           -1          0          0           330.51     52.46   
2020-04-09            1          1     371.06                0         0   
2020-06-09           -1          0          0           421.65     50.59   
2020-06-24            1          1     468.54                0         0   

           cash_onhand position_value total_position accumu_return  
date                                                                
2019-01-10     -314.57         324.66          10.09         10.09  
2019-05-21       36.38              0          36.38         36.38  
2019-06-25     -334.37          360.3          25.93         25.93  
2019-07-25      -15.51              0         -15.51        -15.51  
2019-10-28     -293.56         281.86          -11.7         -11.7  
2020-03-13       36.95              0          36.95         36.95  
2020-04-09     -334.11         370.72          36.61         36.61  
2020-06-09       87.54              0          87.54         87.54  
2020-06-24        -381         457.85          76.85         76.85  
Accumulated profit/loss for one share of stock with initial capital of $0 at the end of modeling period: $74.04
The current status of the model is: Holding a position since 2020-06-24 00:00:00 

Processing portfolio for model: SMA_018_SlowMA_35_FastMA_20
BOUGHT QTY: 1 on 2019-01-11 00:00:00 at the price of 330.96
SOLD QTY: -1 on 2019-05-23 00:00:00 at the price of 355.5
BOUGHT QTY: 1 on 2019-06-28 00:00:00 at the price of 370.26
SOLD QTY: -1 on 2019-07-29 00:00:00 at the price of 335.98
BOUGHT QTY: 1 on 2019-10-31 00:00:00 at the price of 291.0
SOLD QTY: -1 on 2020-03-18 00:00:00 at the price of 302.395
BOUGHT QTY: 1 on 2020-04-15 00:00:00 at the price of 413.0
SOLD QTY: -1 on 2020-06-16 00:00:00 at the price of 425.76
BOUGHT QTY: 1 on 2020-06-26 00:00:00 at the price of 466.39
           trade_action qty_onhand cost_basis sold_transaction gain_loss  \
date                                                                       
2019-01-11            1          1     330.96                0         0   
2019-05-23           -1          0          0            355.5     24.54   
2019-06-28            1          1     370.26                0         0   
2019-07-29           -1          0          0           335.98    -34.28   
2019-10-31            1          1        291                0         0   
2020-03-18           -1          0          0          302.395    11.395   
2020-04-15            1          1        413                0         0   
2020-06-16           -1          0          0           425.76     12.76   
2020-06-26            1          1     466.39                0         0   

           cash_onhand position_value total_position accumu_return  
date                                                                
2019-01-11     -330.96         337.59           6.63          6.63  
2019-05-23       24.54              0          24.54         24.54  
2019-06-28     -345.72         367.32           21.6          21.6  
2019-07-29       -9.74              0          -9.74         -9.74  
2019-10-31     -300.74         287.41         -13.33        -13.33  
2020-03-18       1.655              0          1.655         1.655  
2020-04-15    -411.345         426.75         15.405        15.405  
2020-06-16      14.415              0         14.415        14.415  
2020-06-26    -451.975          443.4         -8.575        -8.575  
Accumulated profit/loss for one share of stock with initial capital of $0 at the end of modeling period: $3.07
The current status of the model is: Holding a position since 2020-06-26 00:00:00 

Processing portfolio for model: SMA_019_SlowMA_40_FastMA_05
BOUGHT QTY: 1 on 2019-01-08 00:00:00 at the price of 319.98
SOLD QTY: -1 on 2019-04-02 00:00:00 at the price of 366.25
BOUGHT QTY: 1 on 2019-04-03 00:00:00 at the price of 369.26
SOLD QTY: -1 on 2019-04-16 00:00:00 at the price of 355.0
BOUGHT QTY: 1 on 2019-04-24 00:00:00 at the price of 381.07
SOLD QTY: -1 on 2019-05-14 00:00:00 at the price of 348.71
BOUGHT QTY: 1 on 2019-06-24 00:00:00 at the price of 370.27
SOLD QTY: -1 on 2019-07-19 00:00:00 at the price of 323.4
BOUGHT QTY: 1 on 2019-10-17 00:00:00 at the price of 304.49
SOLD QTY: -1 on 2019-10-23 00:00:00 at the price of 268.06
BOUGHT QTY: 1 on 2019-10-31 00:00:00 at the price of 291.0
SOLD QTY: -1 on 2020-03-12 00:00:00 at the price of 326.5
BOUGHT QTY: 1 on 2020-04-01 00:00:00 at the price of 376.05
SOLD QTY: -1 on 2020-06-01 00:00:00 at the price of 418.83
BOUGHT QTY: 1 on 2020-06-18 00:00:00 at the price of 448.73
           trade_action qty_onhand cost_basis sold_transaction gain_loss  \
date                                                                       
2019-01-08            1          1     319.98                0         0   
2019-04-02           -1          0          0           366.25     46.27   
2019-04-03            1          1     369.26                0         0   
2019-04-16           -1          0          0              355    -14.26   
2019-04-24            1          1     381.07                0         0   
2019-05-14           -1          0          0           348.71    -32.36   
2019-06-24            1          1     370.27                0         0   
2019-07-19           -1          0          0            323.4    -46.87   
2019-10-17            1          1     304.49                0         0   
2019-10-23           -1          0          0           268.06    -36.43   
2019-10-31            1          1        291                0         0   
2020-03-12           -1          0          0            326.5      35.5   
2020-04-01            1          1     376.05                0         0   
2020-06-01           -1          0          0           418.83     42.78   
2020-06-18            1          1     448.73                0         0   

           cash_onhand position_value total_position accumu_return  
date                                                                
2019-01-08     -319.98         320.27           0.29          0.29  
2019-04-02       46.27              0          46.27         46.27  
2019-04-03     -322.99         369.75          46.76         46.76  
2019-04-16       32.01              0          32.01         32.01  
2019-04-24     -349.06         374.23          25.17         25.17  
2019-05-14       -0.35              0          -0.35         -0.35  
2019-06-24     -370.62         371.04           0.42          0.42  
2019-07-19      -47.22              0         -47.22        -47.22  
2019-10-17     -351.71         293.35         -58.36        -58.36  
2019-10-23      -83.65              0         -83.65        -83.65  
2019-10-31     -374.65         287.41         -87.24        -87.24  
2020-03-12      -48.15              0         -48.15        -48.15  
2020-04-01      -424.2         364.08         -60.12        -60.12  
2020-06-01       -5.37              0          -5.37         -5.37  
2020-06-18      -454.1         449.87          -4.23         -4.23  
Accumulated profit/loss for one share of stock with initial capital of $0 at the end of modeling period: $0.94
The current status of the model is: Holding a position since 2020-06-18 00:00:00 

Processing portfolio for model: SMA_020_SlowMA_40_FastMA_10
BOUGHT QTY: 1 on 2019-01-10 00:00:00 at the price of 314.57
SOLD QTY: -1 on 2019-04-18 00:00:00 at the price of 355.0
BOUGHT QTY: 1 on 2019-04-24 00:00:00 at the price of 381.07
SOLD QTY: -1 on 2019-05-16 00:00:00 at the price of 356.37
BOUGHT QTY: 1 on 2019-06-27 00:00:00 at the price of 363.2
SOLD QTY: -1 on 2019-07-23 00:00:00 at the price of 311.44
BOUGHT QTY: 1 on 2019-11-04 00:00:00 at the price of 288.0
SOLD QTY: -1 on 2020-03-16 00:00:00 at the price of 306.63
BOUGHT QTY: 1 on 2020-04-06 00:00:00 at the price of 365.22
SOLD QTY: -1 on 2020-06-05 00:00:00 at the price of 407.29
BOUGHT QTY: 1 on 2020-06-19 00:00:00 at the price of 449.12
           trade_action qty_onhand cost_basis sold_transaction gain_loss  \
date                                                                       
2019-01-10            1          1     314.57                0         0   
2019-04-18           -1          0          0              355     40.43   
2019-04-24            1          1     381.07                0         0   
2019-05-16           -1          0          0           356.37     -24.7   
2019-06-27            1          1      363.2                0         0   
2019-07-23           -1          0          0           311.44    -51.76   
2019-11-04            1          1        288                0         0   
2020-03-16           -1          0          0           306.63     18.63   
2020-04-06            1          1     365.22                0         0   
2020-06-05           -1          0          0           407.29     42.07   
2020-06-19            1          1     449.12                0         0   

           cash_onhand position_value total_position accumu_return  
date                                                                
2019-01-10     -314.57         324.66          10.09         10.09  
2019-04-18       40.43              0          40.43         40.43  
2019-04-24     -340.64         374.23          33.59         33.59  
2019-05-16       15.73              0          15.73         15.73  
2019-06-27     -347.47         370.02          22.55         22.55  
2019-07-23      -36.03              0         -36.03        -36.03  
2019-11-04     -324.03         292.86         -31.17        -31.17  
2020-03-16       -17.4              0          -17.4         -17.4  
2020-04-06     -382.62         379.96          -2.66         -2.66  
2020-06-05       24.67              0          24.67         24.67  
2020-06-19     -424.45         453.72          29.27         29.27  
Accumulated profit/loss for one share of stock with initial capital of $0 at the end of modeling period: $30.59
The current status of the model is: Holding a position since 2020-06-19 00:00:00 

Processing portfolio for model: SMA_021_SlowMA_40_FastMA_15
BOUGHT QTY: 1 on 2019-01-11 00:00:00 at the price of 330.96
SOLD QTY: -1 on 2019-05-21 00:00:00 at the price of 350.95
BOUGHT QTY: 1 on 2019-06-28 00:00:00 at the price of 370.26
SOLD QTY: -1 on 2019-07-25 00:00:00 at the price of 318.86
BOUGHT QTY: 1 on 2019-10-31 00:00:00 at the price of 291.0
SOLD QTY: -1 on 2020-03-17 00:00:00 at the price of 306.18
BOUGHT QTY: 1 on 2020-04-13 00:00:00 at the price of 371.31
SOLD QTY: -1 on 2020-06-10 00:00:00 at the price of 436.0
BOUGHT QTY: 1 on 2020-06-22 00:00:00 at the price of 455.01
           trade_action qty_onhand cost_basis sold_transaction gain_loss  \
date                                                                       
2019-01-11            1          1     330.96                0         0   
2019-05-21           -1          0          0           350.95     19.99   
2019-06-28            1          1     370.26                0         0   
2019-07-25           -1          0          0           318.86     -51.4   
2019-10-31            1          1        291                0         0   
2020-03-17           -1          0          0           306.18     15.18   
2020-04-13            1          1     371.31                0         0   
2020-06-10           -1          0          0              436     64.69   
2020-06-22            1          1     455.01                0         0   

           cash_onhand position_value total_position accumu_return  
date                                                                
2019-01-11     -330.96         337.59           6.63          6.63  
2019-05-21       19.99              0          19.99         19.99  
2019-06-28     -350.27         367.32          17.05         17.05  
2019-07-25      -31.41              0         -31.41        -31.41  
2019-10-31     -322.41         287.41            -35           -35  
2020-03-17      -16.23              0         -16.23        -16.23  
2020-04-13     -387.54         396.72           9.18          9.18  
2020-06-10       48.46              0          48.46         48.46  
2020-06-22     -406.55         468.04          61.49         61.49  
Accumulated profit/loss for one share of stock with initial capital of $0 at the end of modeling period: $48.49
The current status of the model is: Holding a position since 2020-06-22 00:00:00 

Processing portfolio for model: SMA_022_SlowMA_40_FastMA_20
BOUGHT QTY: 1 on 2019-01-14 00:00:00 at the price of 334.24
SOLD QTY: -1 on 2019-05-24 00:00:00 at the price of 355.41
BOUGHT QTY: 1 on 2019-07-02 00:00:00 at the price of 374.89
SOLD QTY: -1 on 2019-07-29 00:00:00 at the price of 335.98
BOUGHT QTY: 1 on 2019-11-01 00:00:00 at the price of 288.7
SOLD QTY: -1 on 2020-03-19 00:00:00 at the price of 324.33
BOUGHT QTY: 1 on 2020-04-16 00:00:00 at the price of 437.0
SOLD QTY: -1 on 2020-06-16 00:00:00 at the price of 425.76
BOUGHT QTY: 1 on 2020-06-25 00:00:00 at the price of 458.86
           trade_action qty_onhand cost_basis sold_transaction gain_loss  \
date                                                                       
2019-01-14            1          1     334.24                0         0   
2019-05-24           -1          0          0           355.41     21.17   
2019-07-02            1          1     374.89                0         0   
2019-07-29           -1          0          0           335.98    -38.91   
2019-11-01            1          1      288.7                0         0   
2020-03-19           -1          0          0           324.33     35.63   
2020-04-16            1          1        437                0         0   
2020-06-16           -1          0          0           425.76    -11.24   
2020-06-25            1          1     458.86                0         0   

           cash_onhand position_value total_position accumu_return  
date                                                                
2019-01-14     -334.24         332.94           -1.3          -1.3  
2019-05-24       21.17              0          21.17         21.17  
2019-07-02     -353.72         375.43          21.71         21.71  
2019-07-29      -17.74              0         -17.74        -17.74  
2019-11-01     -306.44         286.81         -19.63        -19.63  
2020-03-19       17.89              0          17.89         17.89  
2020-04-16     -419.11         439.17          20.06         20.06  
2020-06-16        6.65              0           6.65          6.65  
2020-06-25     -452.21         465.91           13.7          13.7  
Accumulated profit/loss for one share of stock with initial capital of $0 at the end of modeling period: $2.83
The current status of the model is: Holding a position since 2020-06-25 00:00:00 

Processing portfolio for model: SMA_023_SlowMA_45_FastMA_05
BOUGHT QTY: 1 on 2019-01-08 00:00:00 at the price of 319.98
SOLD QTY: -1 on 2019-04-16 00:00:00 at the price of 355.0
BOUGHT QTY: 1 on 2019-04-24 00:00:00 at the price of 381.07
SOLD QTY: -1 on 2019-05-14 00:00:00 at the price of 348.71
BOUGHT QTY: 1 on 2019-06-24 00:00:00 at the price of 370.27
SOLD QTY: -1 on 2019-07-19 00:00:00 at the price of 323.4
BOUGHT QTY: 1 on 2019-10-18 00:00:00 at the price of 289.36
SOLD QTY: -1 on 2019-10-22 00:00:00 at the price of 271.159
BOUGHT QTY: 1 on 2019-10-31 00:00:00 at the price of 291.0
SOLD QTY: -1 on 2020-03-13 00:00:00 at the price of 330.51
BOUGHT QTY: 1 on 2020-04-01 00:00:00 at the price of 376.05
SOLD QTY: -1 on 2020-06-09 00:00:00 at the price of 421.65
BOUGHT QTY: 1 on 2020-06-11 00:00:00 at the price of 428.2
SOLD QTY: -1 on 2020-06-17 00:00:00 at the price of 441.82
BOUGHT QTY: 1 on 2020-06-18 00:00:00 at the price of 448.73
           trade_action qty_onhand cost_basis sold_transaction gain_loss  \
date                                                                       
2019-01-08            1          1     319.98                0         0   
2019-04-16           -1          0          0              355     35.02   
2019-04-24            1          1     381.07                0         0   
2019-05-14           -1          0          0           348.71    -32.36   
2019-06-24            1          1     370.27                0         0   
2019-07-19           -1          0          0            323.4    -46.87   
2019-10-18            1          1     289.36                0         0   
2019-10-22           -1          0          0          271.159   -18.201   
2019-10-31            1          1        291                0         0   
2020-03-13           -1          0          0           330.51     39.51   
2020-04-01            1          1     376.05                0         0   
2020-06-09           -1          0          0           421.65      45.6   
2020-06-11            1          1      428.2                0         0   
2020-06-17           -1          0          0           441.82     13.62   
2020-06-18            1          1     448.73                0         0   

           cash_onhand position_value total_position accumu_return  
date                                                                
2019-01-08     -319.98         320.27           0.29          0.29  
2019-04-16       35.02              0          35.02         35.02  
2019-04-24     -346.05         374.23          28.18         28.18  
2019-05-14        2.66              0           2.66          2.66  
2019-06-24     -367.61         371.04           3.43          3.43  
2019-07-19      -44.21              0         -44.21        -44.21  
2019-10-18     -333.57          275.3         -58.27        -58.27  
2019-10-22     -62.411              0        -62.411       -62.411  
2019-10-31    -353.411         287.41        -66.001       -66.001  
2020-03-13     -22.901              0        -22.901       -22.901  
2020-04-01    -398.951         364.08        -34.871       -34.871  
2020-06-09      22.699              0         22.699        22.699  
2020-06-11    -405.501         425.56         20.059        20.059  
2020-06-17      36.319              0         36.319        36.319  
2020-06-18    -412.411         449.87         37.459        37.459  
Accumulated profit/loss for one share of stock with initial capital of $0 at the end of modeling period: $42.63
The current status of the model is: Holding a position since 2020-06-18 00:00:00 

Processing portfolio for model: SMA_024_SlowMA_45_FastMA_10
BOUGHT QTY: 1 on 2019-01-10 00:00:00 at the price of 314.57
SOLD QTY: -1 on 2019-04-22 00:00:00 at the price of 359.7
BOUGHT QTY: 1 on 2019-04-24 00:00:00 at the price of 381.07
SOLD QTY: -1 on 2019-05-16 00:00:00 at the price of 356.37
BOUGHT QTY: 1 on 2019-06-28 00:00:00 at the price of 370.26
SOLD QTY: -1 on 2019-07-23 00:00:00 at the price of 311.44
BOUGHT QTY: 1 on 2019-11-05 00:00:00 at the price of 289.99
SOLD QTY: -1 on 2020-03-16 00:00:00 at the price of 306.63
BOUGHT QTY: 1 on 2020-04-06 00:00:00 at the price of 365.22
SOLD QTY: -1 on 2020-06-09 00:00:00 at the price of 421.65
BOUGHT QTY: 1 on 2020-06-19 00:00:00 at the price of 449.12
           trade_action qty_onhand cost_basis sold_transaction gain_loss  \
date                                                                       
2019-01-10            1          1     314.57                0         0   
2019-04-22           -1          0          0            359.7     45.13   
2019-04-24            1          1     381.07                0         0   
2019-05-16           -1          0          0           356.37     -24.7   
2019-06-28            1          1     370.26                0         0   
2019-07-23           -1          0          0           311.44    -58.82   
2019-11-05            1          1     289.99                0         0   
2020-03-16           -1          0          0           306.63     16.64   
2020-04-06            1          1     365.22                0         0   
2020-06-09           -1          0          0           421.65     56.43   
2020-06-19            1          1     449.12                0         0   

           cash_onhand position_value total_position accumu_return  
date                                                                
2019-01-10     -314.57         324.66          10.09         10.09  
2019-04-22       45.13              0          45.13         45.13  
2019-04-24     -335.94         374.23          38.29         38.29  
2019-05-16       20.43              0          20.43         20.43  
2019-06-28     -349.83         367.32          17.49         17.49  
2019-07-23      -38.39              0         -38.39        -38.39  
2019-11-05     -328.38         288.03         -40.35        -40.35  
2020-03-16      -21.75              0         -21.75        -21.75  
2020-04-06     -386.97         379.96          -7.01         -7.01  
2020-06-09       34.68              0          34.68         34.68  
2020-06-19     -414.44         453.72          39.28         39.28  
Accumulated profit/loss for one share of stock with initial capital of $0 at the end of modeling period: $40.60
The current status of the model is: Holding a position since 2020-06-19 00:00:00 

Processing portfolio for model: SMA_025_SlowMA_45_FastMA_15
BOUGHT QTY: 1 on 2019-01-14 00:00:00 at the price of 334.24
SOLD QTY: -1 on 2019-05-21 00:00:00 at the price of 350.95
BOUGHT QTY: 1 on 2019-07-02 00:00:00 at the price of 374.89
SOLD QTY: -1 on 2019-07-25 00:00:00 at the price of 318.86
BOUGHT QTY: 1 on 2019-10-31 00:00:00 at the price of 291.0
SOLD QTY: -1 on 2020-03-17 00:00:00 at the price of 306.18
BOUGHT QTY: 1 on 2020-04-13 00:00:00 at the price of 371.31
SOLD QTY: -1 on 2020-06-12 00:00:00 at the price of 429.0
BOUGHT QTY: 1 on 2020-06-22 00:00:00 at the price of 455.01
           trade_action qty_onhand cost_basis sold_transaction gain_loss  \
date                                                                       
2019-01-14            1          1     334.24                0         0   
2019-05-21           -1          0          0           350.95     16.71   
2019-07-02            1          1     374.89                0         0   
2019-07-25           -1          0          0           318.86    -56.03   
2019-10-31            1          1        291                0         0   
2020-03-17           -1          0          0           306.18     15.18   
2020-04-13            1          1     371.31                0         0   
2020-06-12           -1          0          0              429     57.69   
2020-06-22            1          1     455.01                0         0   

           cash_onhand position_value total_position accumu_return  
date                                                                
2019-01-14     -334.24         332.94           -1.3          -1.3  
2019-05-21       16.71              0          16.71         16.71  
2019-07-02     -358.18         375.43          17.25         17.25  
2019-07-25      -39.32              0         -39.32        -39.32  
2019-10-31     -330.32         287.41         -42.91        -42.91  
2020-03-17      -24.14              0         -24.14        -24.14  
2020-04-13     -395.45         396.72           1.27          1.27  
2020-06-12       33.55              0          33.55         33.55  
2020-06-22     -421.46         468.04          46.58         46.58  
Accumulated profit/loss for one share of stock with initial capital of $0 at the end of modeling period: $33.58
The current status of the model is: Holding a position since 2020-06-22 00:00:00 

Processing portfolio for model: SMA_026_SlowMA_45_FastMA_20
BOUGHT QTY: 1 on 2019-01-16 00:00:00 at the price of 354.0
SOLD QTY: -1 on 2019-05-24 00:00:00 at the price of 355.41
BOUGHT QTY: 1 on 2019-07-03 00:00:00 at the price of 376.69
SOLD QTY: -1 on 2019-07-30 00:00:00 at the price of 329.2
BOUGHT QTY: 1 on 2019-11-05 00:00:00 at the price of 289.99
SOLD QTY: -1 on 2020-03-19 00:00:00 at the price of 324.33
BOUGHT QTY: 1 on 2020-04-16 00:00:00 at the price of 437.0
SOLD QTY: -1 on 2020-06-17 00:00:00 at the price of 441.82
BOUGHT QTY: 1 on 2020-06-24 00:00:00 at the price of 468.54
           trade_action qty_onhand cost_basis sold_transaction gain_loss  \
date                                                                       
2019-01-16            1          1        354                0         0   
2019-05-24           -1          0          0           355.41      1.41   
2019-07-03            1          1     376.69                0         0   
2019-07-30           -1          0          0            329.2    -47.49   
2019-11-05            1          1     289.99                0         0   
2020-03-19           -1          0          0           324.33     34.34   
2020-04-16            1          1        437                0         0   
2020-06-17           -1          0          0           441.82      4.82   
2020-06-24            1          1     468.54                0         0   

           cash_onhand position_value total_position accumu_return  
date                                                                
2019-01-16        -354         351.39          -2.61         -2.61  
2019-05-24        1.41              0           1.41          1.41  
2019-07-03     -375.28         381.72           6.44          6.44  
2019-07-30      -46.08              0         -46.08        -46.08  
2019-11-05     -336.07         288.03         -48.04        -48.04  
2020-03-19      -11.74              0         -11.74        -11.74  
2020-04-16     -448.74         439.17          -9.57         -9.57  
2020-06-17       -6.92              0          -6.92         -6.92  
2020-06-24     -475.46         457.85         -17.61        -17.61  
Accumulated profit/loss for one share of stock with initial capital of $0 at the end of modeling period: $-20.42
The current status of the model is: Holding a position since 2020-06-24 00:00:00 

Processing portfolio for model: SMA_027_SlowMA_50_FastMA_05
BOUGHT QTY: 1 on 2019-01-08 00:00:00 at the price of 319.98
SOLD QTY: -1 on 2019-04-17 00:00:00 at the price of 365.05
BOUGHT QTY: 1 on 2019-04-24 00:00:00 at the price of 381.07
SOLD QTY: -1 on 2019-05-14 00:00:00 at the price of 348.71
BOUGHT QTY: 1 on 2019-06-24 00:00:00 at the price of 370.27
SOLD QTY: -1 on 2019-07-19 00:00:00 at the price of 323.4
BOUGHT QTY: 1 on 2019-11-01 00:00:00 at the price of 288.7
SOLD QTY: -1 on 2020-03-13 00:00:00 at the price of 330.51
BOUGHT QTY: 1 on 2020-03-31 00:00:00 at the price of 367.93
           trade_action qty_onhand cost_basis sold_transaction gain_loss  \
date                                                                       
2019-01-08            1          1     319.98                0         0   
2019-04-17           -1          0          0           365.05     45.07   
2019-04-24            1          1     381.07                0         0   
2019-05-14           -1          0          0           348.71    -32.36   
2019-06-24            1          1     370.27                0         0   
2019-07-19           -1          0          0            323.4    -46.87   
2019-11-01            1          1      288.7                0         0   
2020-03-13           -1          0          0           330.51     41.81   
2020-03-31            1          1     367.93                0         0   

           cash_onhand position_value total_position accumu_return  
date                                                                
2019-01-08     -319.98         320.27           0.29          0.29  
2019-04-17       45.07              0          45.07         45.07  
2019-04-24        -336         374.23          38.23         38.23  
2019-05-14       12.71              0          12.71         12.71  
2019-06-24     -357.56         371.04          13.48         13.48  
2019-07-19      -34.16              0         -34.16        -34.16  
2019-11-01     -322.86         286.81         -36.05        -36.05  
2020-03-13        7.65              0           7.65          7.65  
2020-03-31     -360.28          375.5          15.22         15.22  
Accumulated profit/loss for one share of stock with initial capital of $0 at the end of modeling period: $94.76
The current status of the model is: Holding a position since 2020-03-31 00:00:00 

Processing portfolio for model: SMA_028_SlowMA_50_FastMA_10
BOUGHT QTY: 1 on 2019-01-10 00:00:00 at the price of 314.57
SOLD QTY: -1 on 2019-05-17 00:00:00 at the price of 356.39
BOUGHT QTY: 1 on 2019-06-28 00:00:00 at the price of 370.26
SOLD QTY: -1 on 2019-07-23 00:00:00 at the price of 311.44
BOUGHT QTY: 1 on 2019-11-06 00:00:00 at the price of 288.19
SOLD QTY: -1 on 2020-03-17 00:00:00 at the price of 306.18
BOUGHT QTY: 1 on 2020-04-06 00:00:00 at the price of 365.22
           trade_action qty_onhand cost_basis sold_transaction gain_loss  \
date                                                                       
2019-01-10            1          1     314.57                0         0   
2019-05-17           -1          0          0           356.39     41.82   
2019-06-28            1          1     370.26                0         0   
2019-07-23           -1          0          0           311.44    -58.82   
2019-11-06            1          1     288.19                0         0   
2020-03-17           -1          0          0           306.18     17.99   
2020-04-06            1          1     365.22                0         0   

           cash_onhand position_value total_position accumu_return  
date                                                                
2019-01-10     -314.57         324.66          10.09         10.09  
2019-05-17       41.82              0          41.82         41.82  
2019-06-28     -328.44         367.32          38.88         38.88  
2019-07-23         -17              0            -17           -17  
2019-11-06     -305.19         288.59          -16.6         -16.6  
2020-03-17        0.99              0           0.99          0.99  
2020-04-06     -364.23         379.96          15.73         15.73  
Accumulated profit/loss for one share of stock with initial capital of $0 at the end of modeling period: $90.81
The current status of the model is: Holding a position since 2020-04-06 00:00:00 

Processing portfolio for model: SMA_029_SlowMA_50_FastMA_15
BOUGHT QTY: 1 on 2019-01-15 00:00:00 at the price of 349.6
SOLD QTY: -1 on 2019-05-21 00:00:00 at the price of 350.95
BOUGHT QTY: 1 on 2019-07-03 00:00:00 at the price of 376.69
SOLD QTY: -1 on 2019-07-25 00:00:00 at the price of 318.86
BOUGHT QTY: 1 on 2019-11-05 00:00:00 at the price of 289.99
SOLD QTY: -1 on 2020-03-18 00:00:00 at the price of 302.395
BOUGHT QTY: 1 on 2020-04-13 00:00:00 at the price of 371.31
           trade_action qty_onhand cost_basis sold_transaction gain_loss  \
date                                                                       
2019-01-15            1          1      349.6                0         0   
2019-05-21           -1          0          0           350.95      1.35   
2019-07-03            1          1     376.69                0         0   
2019-07-25           -1          0          0           318.86    -57.83   
2019-11-05            1          1     289.99                0         0   
2020-03-18           -1          0          0          302.395    12.405   
2020-04-13            1          1     371.31                0         0   

           cash_onhand position_value total_position accumu_return  
date                                                                
2019-01-15      -349.6         354.64           5.04          5.04  
2019-05-21        1.35              0           1.35          1.35  
2019-07-03     -375.34         381.72           6.38          6.38  
2019-07-25      -56.48              0         -56.48        -56.48  
2019-11-05     -346.47         288.03         -58.44        -58.44  
2020-03-18     -44.075              0        -44.075       -44.075  
2020-04-13    -415.385         396.72        -18.665       -18.665  
Accumulated profit/loss for one share of stock with initial capital of $0 at the end of modeling period: $39.65
The current status of the model is: Holding a position since 2020-04-13 00:00:00 

Processing portfolio for model: SMA_030_SlowMA_50_FastMA_20
BOUGHT QTY: 1 on 2019-01-16 00:00:00 at the price of 354.0
SOLD QTY: -1 on 2019-05-24 00:00:00 at the price of 355.41
BOUGHT QTY: 1 on 2019-07-05 00:00:00 at the price of 378.29
SOLD QTY: -1 on 2019-07-30 00:00:00 at the price of 329.2
BOUGHT QTY: 1 on 2019-11-06 00:00:00 at the price of 288.19
SOLD QTY: -1 on 2020-03-20 00:00:00 at the price of 342.31
BOUGHT QTY: 1 on 2020-04-16 00:00:00 at the price of 437.0
SOLD QTY: -1 on 2020-06-22 00:00:00 at the price of 455.01
BOUGHT QTY: 1 on 2020-06-24 00:00:00 at the price of 468.54
           trade_action qty_onhand cost_basis sold_transaction gain_loss  \
date                                                                       
2019-01-16            1          1        354                0         0   
2019-05-24           -1          0          0           355.41      1.41   
2019-07-05            1          1     378.29                0         0   
2019-07-30           -1          0          0            329.2    -49.09   
2019-11-06            1          1     288.19                0         0   
2020-03-20           -1          0          0           342.31     54.12   
2020-04-16            1          1        437                0         0   
2020-06-22           -1          0          0           455.01     18.01   
2020-06-24            1          1     468.54                0         0   

           cash_onhand position_value total_position accumu_return  
date                                                                
2019-01-16        -354         351.39          -2.61         -2.61  
2019-05-24        1.41              0           1.41          1.41  
2019-07-05     -376.88         380.55           3.67          3.67  
2019-07-30      -47.68              0         -47.68        -47.68  
2019-11-06     -335.87         288.59         -47.28        -47.28  
2020-03-20        6.44              0           6.44          6.44  
2020-04-16     -430.56         439.17           8.61          8.61  
2020-06-22       24.45              0          24.45         24.45  
2020-06-24     -444.09         457.85          13.76         13.76  
Accumulated profit/loss for one share of stock with initial capital of $0 at the end of modeling period: $10.95
The current status of the model is: Holding a position since 2020-06-24 00:00:00 

In [20]:
# Display the model performance summary
performance_summary.sort_values(by=['return_value'], inplace=True, ascending=False)
print(performance_summary)
                     model_name  return_value return_percent
2   SMA_003_SlowMA_15_FastMA_10       100.055           None
26  SMA_027_SlowMA_50_FastMA_05        94.760           None
27  SMA_028_SlowMA_50_FastMA_10        90.810           None
15  SMA_016_SlowMA_35_FastMA_10        84.981           None
16  SMA_017_SlowMA_35_FastMA_15        74.040           None
10  SMA_011_SlowMA_30_FastMA_05        69.075           None
4   SMA_005_SlowMA_20_FastMA_10        66.590           None
12  SMA_013_SlowMA_30_FastMA_15        63.120           None
11  SMA_012_SlowMA_30_FastMA_10        62.370           None
9   SMA_010_SlowMA_25_FastMA_20        59.640           None
1   SMA_002_SlowMA_15_FastMA_05        55.085           None
8   SMA_009_SlowMA_25_FastMA_15        54.420           None
20  SMA_021_SlowMA_40_FastMA_15        48.490           None
22  SMA_023_SlowMA_45_FastMA_05        42.629           None
5   SMA_006_SlowMA_20_FastMA_15        41.235           None
23  SMA_024_SlowMA_45_FastMA_10        40.600           None
28  SMA_029_SlowMA_50_FastMA_15        39.655           None
7   SMA_008_SlowMA_25_FastMA_10        38.440           None
6   SMA_007_SlowMA_25_FastMA_05        35.675           None
24  SMA_025_SlowMA_45_FastMA_15        33.580           None
19  SMA_020_SlowMA_40_FastMA_10        30.590           None
3   SMA_004_SlowMA_20_FastMA_05        28.355           None
14  SMA_015_SlowMA_35_FastMA_05        13.140           None
29  SMA_030_SlowMA_50_FastMA_20        10.950           None
17  SMA_018_SlowMA_35_FastMA_20         3.065           None
21  SMA_022_SlowMA_40_FastMA_20         2.830           None
0   SMA_001_SlowMA_10_FastMA_05         1.670           None
18  SMA_019_SlowMA_40_FastMA_05         0.940           None
13  SMA_014_SlowMA_30_FastMA_20        -7.975           None
25  SMA_026_SlowMA_45_FastMA_20       -20.420           None
In [21]:
# Display the transactions from the top model
top_model = performance_summary.iloc[0]['model_name']
print('The transactions from the top model %s:' % (top_model))
print(portfolio_collection[top_model][portfolio_collection[top_model].trade_action != 0])
The transactions from the top model SMA_003_SlowMA_15_FastMA_10:
           trade_action qty_onhand cost_basis sold_transaction gain_loss  \
date                                                                       
2019-01-08            1          1     319.98                0         0   
2019-02-01           -1          0          0           337.18      17.2   
2019-02-07            1          1      347.9                0         0   
2019-03-08           -1          0          0           345.75     -2.15   
2019-03-20            1          1     358.91                0         0   
2019-04-04           -1          0          0           370.07     11.16   
2019-04-11            1          1        365                0         0   
2019-04-18           -1          0          0              355       -10   
2019-04-29            1          1     373.68                0         0   
2019-05-13           -1          0          0           352.29    -21.39   
2019-06-18            1          1     355.57                0         0   
2019-06-25           -1          0          0           370.75     15.18   
2019-06-26            1          1      361.6                0         0   
2019-07-19           -1          0          0            323.4     -38.2   
2019-08-08            1          1     311.03                0         0   
2019-08-12           -1          0          0           305.46     -5.57   
2019-10-10            1          1     265.97                0         0   
2019-10-30           -1          0          0           284.34     18.37   
2019-11-06            1          1     288.19                0         0   
2019-12-11           -1          0          0           294.49       6.3   
2019-12-23            1          1     337.76                0         0   
2020-01-10           -1          0          0           337.13     -0.63   
2020-01-15            1          1     338.68                0         0   
2020-03-03           -1          0          0           381.03     42.35   
2020-03-31            1          1     367.93                0         0   
2020-05-05           -1          0          0          427.555    59.625   
2020-05-13            1          1     435.69                0         0   
2020-05-29           -1          0          0           417.46    -18.23   
2020-06-12            1          1        429                0         0   

           cash_onhand position_value total_position accumu_return  
date                                                                
2019-01-08     -319.98         320.27           0.29          0.29  
2019-02-01        17.2              0           17.2          17.2  
2019-02-07      -330.7         344.71          14.01         14.01  
2019-03-08       15.05              0          15.05         15.05  
2019-03-20     -343.86         375.22          31.36         31.36  
2019-04-04       26.21              0          26.21         26.21  
2019-04-11     -338.79         367.65          28.86         28.86  
2019-04-18       16.21              0          16.21         16.21  
2019-04-29     -357.47         371.83          14.36         14.36  
2019-05-13       -5.18              0          -5.18         -5.18  
2019-06-18     -360.75         357.12          -3.63         -3.63  
2019-06-25          10              0             10            10  
2019-06-26      -351.6          362.2           10.6          10.6  
2019-07-19       -28.2              0          -28.2         -28.2  
2019-08-08     -339.23          315.9         -23.33        -23.33  
2019-08-12      -33.77              0         -33.77        -33.77  
2019-10-10     -299.74         280.48         -19.26        -19.26  
2019-10-30       -15.4              0          -15.4         -15.4  
2019-11-06     -303.59         288.59            -15           -15  
2019-12-11        -9.1              0           -9.1          -9.1  
2019-12-23     -346.86          333.1         -13.76        -13.76  
2020-01-10       -9.73              0          -9.73         -9.73  
2020-01-15     -348.41         339.07          -9.34         -9.34  
2020-03-03       32.62              0          32.62         32.62  
2020-03-31     -335.31          375.5          40.19         40.19  
2020-05-05      92.245              0         92.245        92.245  
2020-05-13    -343.445         438.27         94.825        94.825  
2020-05-29      74.015              0         74.015        74.015  
2020-06-12    -354.985         418.07         63.085        63.085  
In [22]:
# Display the entry and exit signals for the top model
print('The trading signal changes from the top model %s:' % (top_model))
print(model_collection[top_model][model_collection[top_model].signal_change != 0])
The trading signal changes from the top model SMA_003_SlowMA_15_FastMA_10:
            open_price  close_price   fast_ma     slow_ma  ma_change  \
date                                                                   
2019-01-07      302.10       315.34  266.5015  266.196333   0.305167   
2019-01-31      339.68       339.50  334.8880  336.673333  -1.785333   
2019-02-06      357.00       352.19  340.8630  339.964000   0.899000   
2019-03-07      360.16       352.60  358.7740  358.832000  -0.058000   
2019-03-19      366.40       358.78  358.0650  357.618667   0.446333   
2019-04-03      369.26       369.75  363.4050  363.451333  -0.046333   
2019-04-10      365.79       363.92  363.9010  363.830667   0.070333   
2019-04-17      365.05       354.74  360.5270  361.391333  -0.864333   
2019-04-26      368.35       374.85  365.1200  364.958667   0.161333   
2019-05-10      361.62       361.04  372.2560  373.280000  -1.024000   
2019-06-17      342.69       350.62  350.9750  349.698667   1.276333   
2019-06-24      370.27       371.04  355.6710  355.723333  -0.052333   
2019-06-25      370.75       360.30  356.5740  356.183333   0.390667   
2019-07-18      323.76       325.21  369.0630  370.648000  -1.585000   
2019-08-07      302.56       304.29  320.4210  318.692000   1.729000   
2019-08-09      313.74       308.93  316.6800  317.660000  -0.980000   
2019-10-09      270.02       267.53  268.5270  268.525333   0.001667   
2019-10-29      281.87       281.21  278.2330  278.870000  -0.637000   
2019-11-05      289.99       288.03  282.9220  281.926000   0.996000   
2019-12-10      296.12       293.12  306.9380  307.657333  -0.719333   
2019-12-20      335.00       336.90  310.1100  308.785333   1.324667   
2020-01-09      342.00       335.66  330.5810  330.802000  -0.221000   
2020-01-14      344.40       338.69  332.7440  331.918000   0.826000   
2020-03-02      373.11       381.05  376.9860  377.095333  -0.109333   
2020-03-30      363.00       370.96  345.1130  341.037667   4.075333   
2020-05-04      417.78       428.15  420.7310  423.148667  -2.417667   
2020-05-12      442.00       431.82  427.8520  425.122667   2.729333   
2020-05-28      417.24       413.44  436.1100  436.252667  -0.142667   
2020-06-11      428.20       425.56  424.2440  423.740667   0.503333   

            trade_signal  signal_change  entry_exit  
date                                                 
2019-01-07           1.0            1.0         0.0  
2019-01-31           0.0           -1.0         0.0  
2019-02-06           1.0            1.0         0.0  
2019-03-07           0.0           -1.0         0.0  
2019-03-19           1.0            1.0         0.0  
2019-04-03           0.0           -1.0         0.0  
2019-04-10           1.0            1.0         0.0  
2019-04-17           0.0           -1.0         0.0  
2019-04-26           1.0            1.0         0.0  
2019-05-10           0.0           -1.0         0.0  
2019-06-17           1.0            1.0         0.0  
2019-06-24           0.0           -1.0         0.0  
2019-06-25           1.0            1.0        -1.0  
2019-07-18           0.0           -1.0         0.0  
2019-08-07           1.0            1.0         0.0  
2019-08-09           0.0           -1.0         0.0  
2019-10-09           1.0            1.0         0.0  
2019-10-29           0.0           -1.0         0.0  
2019-11-05           1.0            1.0         0.0  
2019-12-10           0.0           -1.0         0.0  
2019-12-20           1.0            1.0         0.0  
2020-01-09           0.0           -1.0         0.0  
2020-01-14           1.0            1.0         0.0  
2020-03-02           0.0           -1.0         0.0  
2020-03-30           1.0            1.0         0.0  
2020-05-04           0.0           -1.0         0.0  
2020-05-12           1.0            1.0         0.0  
2020-05-28           0.0           -1.0         0.0  
2020-06-11           1.0            1.0         0.0  
In [23]:
graph_data = model_collection[top_model].copy()
title_string = "Simple Moving Average Crossover Model for " + top_model
fig = plt.figure(figsize=(16,9))
ylabel = stock_symbol + ' price in $'
ax1 = fig.add_subplot(111, ylabel=ylabel, title=title_string)
graph_data['fast_ma'].plot(ax=ax1, color='b', lw=2.)
graph_data['slow_ma'].plot(ax=ax1, color='r', lw=2.)
graph_data['close_price'].plot(ax=ax1, color='g')
ax1.plot(graph_data.loc[graph_data.entry_exit == 1].index, graph_data.close_price[graph_data.entry_exit == 1], '^', markersize=7, color='k',label='buy')
ax1.plot(graph_data.loc[graph_data.entry_exit == -1].index, graph_data.close_price[graph_data.entry_exit == -1], 'v', markersize=7, color='k',label='sell')
plt.legend(loc='upper left')
plt.show()

Task 5. Evaluate Performance

In [24]:
best_model = ''
best_return = 0
for key in portfolio_collection:
    if portfolio_collection[key]['accumu_return'][-1] > best_return:
        best_model = key
        best_return = portfolio_collection[best_model]['accumu_return'][-1]
print('The best model found is:', best_model)
print('The best profit/loss for the investing period is: $%.2f' % (best_return))
if initial_capital != 0:
    print('The best return percentage for initial capital is: %.2f%%' % (best_return / initial_capital * 100))
The best model found is: SMA_003_SlowMA_15_FastMA_10
The best profit/loss for the investing period is: $100.05
In [25]:
worst_model = None
worst_return = 0
for key in portfolio_collection:
    if portfolio_collection[key]['accumu_return'][-1] < worst_return:
        worst_model = key
        worst_return = portfolio_collection[worst_model]['accumu_return'][-1]
print('The worst model found is:', worst_model)
print('The worst profit/loss for the investing period is: $%.2f' % (worst_return))
if initial_capital != 0:
    print('The worst return percentage for the initial capital is: %.2f%%' % (worst_return / initial_capital * 100))
The worst model found is: SMA_026_SlowMA_45_FastMA_20
The worst profit/loss for the investing period is: $-20.42
In [26]:
# Calculate the stock's performance for a long-only model
model_template = model_template[model_start_date:model_end_date]
print('The performance of the long-only model from day one is: $%.2f' %(model_template.iloc[-1]['close_price'] - model_template.iloc[0]['open_price']))
The performance of the long-only model from day one is: $195.76
In [27]:
print ('Total time for the script:',(datetime.now() - startTimeScript))
Total time for the script: 0:00:46.241703